<html>
<head>
  <title>The tablelist::tablelist Command</title>

  <meta name="Author" content="Csaba Nemethi">
  <meta name="Keywords" content="tablelist, multi-column, listbox, widget">
</head>

<body bgcolor="#FFFFFF">
  <div align="center">
    <h1>The <code><b>tablelist::tablelist</b></code> Command</h1>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a>
    </address>
  </div>

  <hr>

  <h2><a name="contents"></a>Contents</h2>

  <ul>
    <li><a href="#quick_ref">Quick Reference</a></li>

    <li><a href="#detailed_ref">Detailed Reference</a></li>
  </ul>

  <div align="center">
    <p><a href="index.html">Start page</a></p>
  </div>

  <hr>

  <h2><a name="quick_ref"></a>Quick Reference</h2>

  <dl>
    <dt><a href="#name">NAME</a></dt>

    <dd><code>tablelist::tablelist</code> - Create and manipulate tablelist
    widgets</dd>

    <dt><br>
    <a href="#synopsis">SYNOPSIS</a></dt>

    <dd>
      <pre>
<b>tablelist::tablelist</b> <i>pathName</i> ?<i>options</i>?
</pre>
    </dd>

    <dt><a href="#std_options">STANDARD OPTIONS</a></dt>

    <dd>
      <pre>
<b>-borderwidth          -highlightthickness  -setgrid
-cursor               -relief              -xscrollcommand
-exportselection      -selectbackground    -yscrollcommand
-highlightbackground  -selectborderwidth
-highlightcolor       -selectforeground</b>
</pre>
    </dd>

    <dt><a href="#body_options">OPTIONS FOR THE BODY COMPONENT OF THE
    WIDGET</a></dt>

    <dd>
      <pre>
<b>-background  -disabledforeground  -font  -foreground</b>
</pre>
    </dd>

    <dt><a href="#widget_options">WIDGET-SPECIFIC OPTIONS</a></dt>

    <dd><code><b><a href="#activestyle">-activestyle</a></b>
    <b>frame</b>|<b>none</b>|<b>underline</b></code></dd>

    <dd><code><b><a href="#arrowcolor">-arrowcolor</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#arrowstyle">-arrowstyle</a></b>
    <b>flat7x4</b>|<b>flat7x5</b>|<b>flat7x7</b>|<b>flat8x5</b>|<b>flat9x5</b>|<b>sunken8x7</b>|<b>sunken10x9</b>|<b>sunken12x11</b></code></dd>

    <dd><code><b><a href="#arrowdisabledcolor">-arrowdisabledcolor</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#columns">-columns</a></b> {<i>width</i> <i>title</i>
    ?<b>left</b>|<b>right</b>|<b>center</b>? <i>width</i> <i>title</i>
    ?<b>left</b>|<b>right</b>|<b>center</b>? ...}</code></dd>

    <dd><code><b><a href="#editendcommand">-editendcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#editstartcommand">-editstartcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#forceeditendcommand">-forceeditendcommand</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#height">-height</a></b> <i>lines</i></code></dd>

    <dd><code><b><a href="#incrarrowtype">-incrarrowtype</a></b>
    <b>up</b>|<b>down</b></code></dd>

    <dd><code><b><a href=
    "#labelactivebackground">-labelactivebackground</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href=
    "#labelactiveforeground">-labelactiveforeground</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#labelbackground">-labelbackground</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-labelbg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#labelborderwidth">-labelborderwidth</a></b>
    <i>screenDistance</i></code>&nbsp; or&nbsp; <code><b>-labelbd</b>
    <i>screenDistance</i></code></dd>

    <dd><code><b><a href="#labelcommand">-labelcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#labelcommand2">-labelcommand2</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href=
    "#labeldisabledforeground">-labeldisabledforeground</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#labelfont">-labelfont</a></b>
    <i>font</i></code></dd>

    <dd><code><b><a href="#labelforeground">-labelforeground</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-labelfg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#labelheight">-labelheight</a></b>
    <i>lines</i></code></dd>

    <dd><code><b><a href="#labelpady">-labelpady</a></b>
    <i>screenDistance</i></code></dd>

    <dd><code><b><a href="#labelrelief">-labelrelief</a></b>
    <b>raised</b>|<b>sunken</b>|<b>flat</b>|<b>ridge</b>|<b>solid</b>|<b>groove</b></code></dd>

    <dd><code><b><a href="#listvariable">-listvariable</a></b>
    <i>variable</i></code></dd>

    <dd><code><b><a href="#movablecolumns">-movablecolumns</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#movablerows">-movablerows</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#movecolumncursor">-movecolumncursor</a></b>
    <i>cursor</i></code></dd>

    <dd><code><b><a href="#movecursor">-movecursor</a></b>
    <i>cursor</i></code></dd>

    <dd><code><b><a href="#protecttitlecolumns">-protecttitlecolumns</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#resizablecolumns">-resizablecolumns</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#resizecursor">-resizecursor</a></b>
    <i>cursor</i></code></dd>

    <dd><code><b><a href="#selectmode">-selectmode</a></b> <i>mode</i>
    (<b>single</b>|<b>browse</b>|<b>multiple</b>|<b>extended</b>)</code></dd>

    <dd><code><b><a href="#selecttype">-selecttype</a></b>
    <b>row</b>|<b>cell</b></code></dd>

    <dd><code><b><a href="#setfocus">-setfocus</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#showarrow">-showarrow</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#showlabels">-showlabels</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#showseparators">-showseparators</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#snipstring">-snipstring</a></b>
    <i>string</i></code></dd>

    <dd><code><b><a href="#sortcommand">-sortcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#spacing">-spacing</a></b>
    <i>screenDistance</i></code></dd>

    <dd><code><b><a href="#state">-state</a></b>
    <b>normal</b>|<b>disabled</b></code></dd>

    <dd><code><b><a href="#stretch">-stretch</a></b>
    <b>all</b>|<i>columnIndexList</i></code></dd>

    <dd><code><b><a href="#stripebackground">-stripebackground</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-stripebg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#stripeforeground">-stripeforeground</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-stripefg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#stripeheight">-stripeheight</a></b>
    <i>lines</i></code></dd>

    <dd><code><b><a href="#takefocus">-takefocus</a></b>
    <b>0</b>|<b>1</b>|<b>""</b>|<i>command</i></code></dd>

    <dd><code><b><a href="#targetcolor">-targetcolor</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#titlecolumns">-titlecolumns</a></b>
    <i>number</i></code></dd>

    <dd><code><b><a href="#tooltipaddcommand">-tooltipaddcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#tooltipdelcommand">-tooltipdelcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#width">-width</a></b> <i>characters</i></code></dd>

    <dt><br>
    <a href="#description">DESCRIPTION</a></dt>

    <dt><br>
    <a href="#colors_and_fonts">COLORS AND FONTS</a></dt>

    <dt><br>
    <a href="#col_options">COLUMN CONFIGURATION OPTIONS</a></dt>

    <dd><code><b><a href="#col_align">-align</a></b>
    <b>left</b>|<b>right</b>|<b>center</b></code></dd>

    <dd><code><b><a href="#col_background">-background</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-bg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#col_changesnipside">-changesnipside</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#col_editable">-editable</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#col_editwindow">-editwindow</a></b>
    <i>name</i></code></dd>

    <dd><code><b><a href="#col_font">-font</a></b> <i>font</i></code></dd>

    <dd><code><b><a href="#col_foreground">-foreground</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-fg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#col_formatcommand">-formatcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#col_hide">-hide</a></b> <i>boolean</i></code></dd>

    <dd><code><b><a href="#col_labelalign">-labelalign</a></b>
    <b>left</b>|<b>right</b>|<b>center</b></code></dd>

    <dd><code><b><a href="#col_labelopts">-labelbackground</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-labelbg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#col_labelopts">-labelborderwidth</a></b>
    <i>screenDistance</i></code>&nbsp; or&nbsp; <code><b>-labelbd</b>
    <i>screenDistance</i></code></dd>

    <dd><code><b><a href="#col_labelopts">-labelcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#col_labelopts">-labelcommand2</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#col_labelopts">-labelfont</a></b>
    <i>font</i></code></dd>

    <dd><code><b><a href="#col_labelopts">-labelforeground</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-labelfg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#col_labelopts">-labelheight</a></b>
    <i>lines</i></code></dd>

    <dd><code><b><a href="#col_labelimage">-labelimage</a></b>
    <i>image</i></code></dd>

    <dd><code><b><a href="#col_labelopts">-labelpady</a></b>
    <i>screenDistance</i></code></dd>

    <dd><code><b><a href="#col_labelopts">-labelrelief</a></b>
    <b>raised</b>|<b>sunken</b>|<b>flat</b>|<b>ridge</b>|<b>solid</b>|<b>groove</b></code></dd>

    <dd><code><b><a href="#col_maxwidth">-maxwidth</a></b>
    <i>width</i></code></dd>

    <dd><code><b><a href="#col_name">-name</a></b> <i>name</i></code></dd>

    <dd><code><b><a href="#col_resizable">-resizable</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#col_selectbackground">-selectbackground</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#col_selectforeground">-selectforeground</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#col_showarrow">-showarrow</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#col_showlinenumbers">-showlinenumbers</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#col_sortcommand">-sortcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#col_sortmode">-sortmode</a></b>
    <b>ascii</b>|<b>command</b>|<b>dictionary</b>|<b>integer</b>|<b>real</b></code></dd>

    <dd><code><b><a href="#col_stretchable">-stretchable</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#col_text">-text</a></b> <i>list</i></code></dd>

    <dd><code><b><a href="#col_title">-title</a></b> <i>title</i></code></dd>

    <dd><code><b><a href="#col_width">-width</a></b> <i>width</i></code></dd>

    <dt><br>
    <a href="#row_options">ROW CONFIGURATION OPTIONS</a></dt>

    <dd><code><b><a href="#row_background">-background</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-bg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#row_font">-font</a></b> <i>font</i></code></dd>

    <dd><code><b><a href="#row_foreground">-foreground</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-fg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#row_hide">-hide</a></b> <i>boolean</i></code></dd>

    <dd><code><b><a href="#row_name">-name</a></b> <i>name</i></code></dd>

    <dd><code><b><a href="#row_selectable">-selectable</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#row_selectbackground">-selectbackground</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#row_selectforeground">-selectforeground</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#row_text">-text</a></b> <i>list</i></code></dd>

    <dt><br>
    <a href="#cell_options">CELL CONFIGURATION OPTIONS</a></dt>

    <dd><code><b><a href="#cell_background">-background</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-bg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#cell_editable">-editable</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#cell_editwindow">-editwindow</a></b>
    <i>name</i></code></dd>

    <dd><code><b><a href="#cell_font">-font</a></b> <i>font</i></code></dd>

    <dd><code><b><a href="#cell_foreground">-foreground</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-fg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#cell_image">-image</a></b> <i>image</i></code></dd>

    <dd><code><b><a href="#cell_selectbackground">-selectbackground</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#cell_selectforeground">-selectforeground</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#cell_text">-text</a></b> <i>text</i></code></dd>

    <dd><code><b><a href="#cell_window">-window</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#cell_windowdestroy">-windowdestroy</a></b>
    <i>command</i></code></dd>

    <dt><br>
    <a href="#cell_editing">INTERACTIVE CELL EDITING</a></dt>

    <dt><br>
    <a href="#row_indices">ROW INDICES</a></dt>

    <dd>
      <pre>
<i>number</i>  <b>k</b><i>number</i>  <b>active</b>  <b>anchor</b>  <b>end</b>  <b>@</b><i>x</i><b>,</b><i>y</i>  <i>name</i>
</pre>
    </dd>

    <dt><a href="#col_indices">COLUMN INDICES</a></dt>

    <dd>
      <pre>
<i>number</i>  <b>active</b>  <b>anchor</b>  <b>end</b>  <b>@</b><i>x</i><b>,</b><i>y</i>  <i>name</i>
</pre>
    </dd>

    <dt><a href="#cell_indices">CELL INDICES</a></dt>

    <dd>
      <pre>
<i>row</i><b>,</b><i>col</i>  <b>active</b>  <b>anchor</b>  <b>end</b>  <b>@</b><i>x</i><b>,</b><i>y</i>

    <i>row</i>: <i>number</i>  <b>k</b><i>number</i>  <b>active</b>  <b>anchor</b>  <b>end</b>  <i>name</i>
    <i>col</i>: <i>number</i>  <b>active</b>  <b>anchor</b>  <b>end</b>  <i>name</i>
</pre>
    </dd>

    <dt><a href="#widget_command">WIDGET COMMAND</a></dt>

    <dd><code><i>pathName</i> <b><a href="#activate">activate</a></b>
    <i>index</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#activatecell">activatecell</a></b>
    <i>cellIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#attrib">attrib</a></b> ?<i>name</i>?
    ?<i>value</i> <i>name</i> <i>value</i> ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#bbox">bbox</a></b>
    <i>index</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#bodypath">bodypath</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#bodytag">bodytag</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#cancelediting">cancelediting</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#cellcget">cellcget</a></b>
    <i>cellIndex</i> <i>option</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#cellconfigure">cellconfigure</a></b>
    <i>cellIndex</i> ?<i>option</i>? ?<i>value</i> <i>option</i> <i>value</i>
    ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#cellindex">cellindex</a></b>
    <i>cellIndex</i></code></dd>

    <dd>
      <code><i>pathName</i> <b><a href="#cellselection">cellselection</a></b>
      <i>option</i> <i>args</i></code>

      <dl>
	<dd><code><i>pathName</i> <b>cellselection</b> <b>anchor</b>
	<i>cellIndex</i></code></dd>

	<dd><code><i>pathName</i> <b>cellselection</b> <b>clear</b>
	<i>firstCell</i> <i>lastCell</i></code></dd>

	<dd><code><i>pathName</i> <b>cellselection</b> <b>clear</b>
	<i>cellIndexList</i></code></dd>

	<dd><code><i>pathName</i> <b>cellselection</b> <b>includes</b>
	<i>cellIndex</i></code></dd>

	<dd><code><i>pathName</i> <b>cellselection</b> <b>set</b>
	<i>firstCell</i> <i>lastCell</i></code></dd>

	<dd><code><i>pathName</i> <b>cellselection</b> <b>set</b>
	<i>cellIndexList</i></code></dd>
      </dl>
    </dd>

    <dd><code><i>pathName</i> <b><a href="#cget">cget</a></b>
    <i>option</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#columncget">columncget</a></b>
    <i>columnIndex</i> <i>option</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#columnconfigure">columnconfigure</a></b> <i>columnIndex</i>
    ?<i>option</i>? ?<i>value</i> <i>option</i> <i>value</i> ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#columncount">columncount</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#columnindex">columnindex</a></b>
    <i>columnIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#columnwidth">columnwidth</a></b>
    <i>columnIndex</i>
    ?<b>-requested</b>|<b>-stretched</b>|<b>-total</b>?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#configure">configure</a></b>
    ?<i>option</i>? ?<i>value</i> <i>option</i> <i>value</i> ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#configcelllist">configcelllist</a></b> {<i>cellIndex</i> <i>option</i>
    <i>value</i> <i>cellIndex</i> <i>option</i> <i>value</i> ...}</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#configcells">configcells</a></b> ?<i>cellIndex</i> <i>option</i>
    <i>value</i> <i>cellIndex</i> <i>option</i> <i>value</i> ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#configcolumnlist">configcolumnlist</a></b> {<i>columnIndex</i>
    <i>option</i> <i>value</i> <i>columnIndex</i> <i>option</i> <i>value</i>
    ...}</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#configcolumns">configcolumns</a></b> ?<i>columnIndex</i> <i>option</i>
    <i>value</i> <i>columnIndex</i> <i>option</i> <i>value</i> ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#configrowlist">configrowlist</a></b> {<i>index</i> <i>option</i>
    <i>value</i> <i>index</i> <i>option</i> <i>value</i> ...}</code></dd>

    <dd><code><i>pathName</i> <b><a href="#configrows">configrows</a></b>
    ?<i>index</i> <i>option</i> <i>value</i> <i>index</i> <i>option</i>
    <i>value</i> ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#containing">containing</a></b>
    <i>y</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#containingcell">containingcell</a></b> <i>x</i> <i>y</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#containingcolumn">containingcolumn</a></b> <i>x</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#curcellselection">curcellselection</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#curselection">curselection</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#delete">delete</a></b> <i>first</i>
    <i>last</i></code><br></dd>

    <dd><code><i>pathName</i> <b><a href="#delete">delete</a></b>
    <i>indexList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#deletecolumns">deletecolumns</a></b>
    <i>firstColumn</i> <i>lastColumn</i></code><br></dd>

    <dd><code><i>pathName</i> <b><a href="#deletecolumns">deletecolumns</a></b>
    <i>columnIndexList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#editcell">editcell</a></b>
    <i>cellIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#editwinpath">editwinpath</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#entrypath">entrypath</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#fillcolumn">fillcolumn</a></b>
    <i>columnIndex</i> <i>text</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#finishediting">finishediting</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#get">get</a></b> <i>first</i>
    <i>last</i></code><br></dd>

    <dd><code><i>pathName</i> <b><a href="#get">get</a></b>
    <i>indexList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#getcells">getcells</a></b>
    <i>firstCell</i> <i>lastCell</i></code><br></dd>

    <dd><code><i>pathName</i> <b><a href="#getcells">getcells</a></b>
    <i>cellIndexList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#getcolumns">getcolumns</a></b>
    <i>firstColumn</i> <i>lastColumn</i></code><br></dd>

    <dd><code><i>pathName</i> <b><a href="#getcolumns">getcolumns</a></b>
    <i>columnIndexList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#getkeys">getkeys</a></b>
    <i>first</i> <i>last</i></code><br></dd>

    <dd><code><i>pathName</i> <b><a href="#getkeys">getkeys</a></b>
    <i>indexList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#imagelabelpath">imagelabelpath</a></b> <i>cellIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#index">index</a></b>
    <i>index</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#insert">insert</a></b> <i>index</i>
    ?<i>item</i> <i>item</i> ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#insertcolumnlist">insertcolumnlist</a></b> <i>columnIndex</i>
    {<i>width</i> <i>title</i> ?<b>left</b>|<b>right</b>|<b>center</b>?
    <i>width</i> <i>title</i> ?<b>left</b>|<b>right</b>|<b>center</b>?
    ...}</code></dd>

    <dd><code><i>pathName</i> <b><a href="#insertcolumns">insertcolumns</a></b>
    <i>columnIndex</i> ?<i>width</i> <i>title</i>
    ?<b>left</b>|<b>right</b>|<b>center</b>? <i>width</i> <i>title</i>
    ?<b>left</b>|<b>right</b>|<b>center</b>? ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#insertlist">insertlist</a></b>
    <i>index</i> <i>itemList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#iselemsnipped">iselemsnipped</a></b>
    <i>cellIndex</i> <i>fullTextName</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#istitlesnipped">istitlesnipped</a></b> <i>columnIndex</i>
    <i>fullTextName</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#itemlistvar">itemlistvar</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#labelpath">labelpath</a></b>
    <i>columnIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#labels">labels</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#move">move</a></b> <i>source</i>
    <i>target</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#movecolumn">movecolumn</a></b>
    <i>sourceColumn</i> <i>targetColumn</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#nearest">nearest</a></b>
    <i>y</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#nearestcell">nearestcell</a></b>
    <i>x</i> <i>y</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#nearestcolumn">nearestcolumn</a></b>
    <i>x</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#rejectinput">rejectinput</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#resetsortinfo">resetsortinfo</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#rowcget">rowcget</a></b>
    <i>index</i> <i>option</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#rowconfigure">rowconfigure</a></b>
    <i>index</i> ?<i>option</i>? ?<i>value</i> <i>option</i> <i>value</i>
    ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#scan">scan</a></b>
    <b>mark</b>|<b>dragto</b> <i>x</i> <i>y</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#see">see</a></b>
    <i>index</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#seecell">seecell</a></b>
    <i>cellIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#seecolumn">seecolumn</a></b>
    <i>columnIndex</i></code></dd>

    <dd>
      <code><i>pathName</i> <b><a href="#selection">selection</a></b>
      <i>option</i> <i>args</i></code>

      <dl>
	<dd><code><i>pathName</i> <b>selection</b> <b>anchor</b>
	<i>index</i></code></dd>

	<dd><code><i>pathName</i> <b>selection</b> <b>clear</b> <i>first</i>
	<i>last</i></code></dd>

	<dd><code><i>pathName</i> <b>selection</b> <b>clear</b>
	<i>indexList</i></code></dd>

	<dd><code><i>pathName</i> <b>selection</b> <b>includes</b>
	<i>index</i></code></dd>

	<dd><code><i>pathName</i> <b>selection</b> <b>set</b> <i>first</i>
	<i>last</i></code></dd>

	<dd><code><i>pathName</i> <b>selection</b> <b>set</b>
	<i>indexList</i></code></dd>
      </dl>
    </dd>

    <dd><code><i>pathName</i> <b><a href="#separatorpath">separatorpath</a></b>
    ?<i>columnIndex</i>?</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#separators">separators</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#size">size</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#sort">sort</a></b>
    ?<b>-increasing</b>|<b>-decreasing</b>?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#sortbycolumn">sortbycolumn</a></b>
    <i>columnIndex</i> ?<b>-increasing</b>|<b>-decreasing</b>?</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#sortbycolumnlist">sortbycolumnlist</a></b> <i>columnIndexList</i>
    ?<i>sortOrderList</i>?</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#sortcolumn">sortcolumn</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#sortcolumnlist">sortcolumnlist</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#sortorder">sortorder</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#sortorderlist">sortorderlist</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#togglecolumnhide">togglecolumnhide</a></b> <i>firstColumn</i>
    <i>lastColumn</i></code><br></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#togglecolumnhide">togglecolumnhide</a></b>
    <i>columnIndexList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#togglerowhide">togglerowhide</a></b>
    <i>first</i> <i>last</i></code><br></dd>

    <dd><code><i>pathName</i> <b><a href="#togglerowhide">togglerowhide</a></b>
    <i>indexList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#windowpath">windowpath</a></b>
    <i>cellIndex</i></code></dd>

    <dd>
      <code><i>pathName</i> <b><a href="#xview">xview</a></b>
      <i>args</i></code>

      <dl>
	<dd><code><i>pathName</i> <b>xview</b></code></dd>

	<dd><code><i>pathName</i> <b>xview</b> <i>units</i></code></dd>

	<dd><code><i>pathName</i> <b>xview</b> <b>moveto</b>
	<i>fraction</i></code></dd>

	<dd><code><i>pathName</i> <b>xview</b> <b>scroll</b> <i>number</i>
	<b>units</b>|<b>pages</b></code></dd>
      </dl>
    </dd>

    <dd>
      <code><i>pathName</i> <b><a href="#yview">yview</a></b>
      <i>args</i></code>

      <dl>
	<dd><code><i>pathName</i> <b>yview</b></code></dd>

	<dd><code><i>pathName</i> <b>yview</b> <i>units</i></code></dd>

	<dd><code><i>pathName</i> <b>yview</b> <b>moveto</b>
	<i>fraction</i></code></dd>

	<dd><code><i>pathName</i> <b>yview</b> <b>scroll</b> <i>number</i>
	<b>units</b>|<b>pages</b></code></dd>
      </dl>
    </dd>

    <dt><br>
    <a href="#body_bindings">DEFAULT AND INDIVIDUAL BINDINGS FOR THE TABLELIST
    BODY</a></dt>

    <dt><br>
    <a href="#label_bindings">DEFAULT BINDINGS FOR THE HEADER LABELS</a></dt>

    <dt><br>
    <a href="#edit_bindings">DEFAULT BINDINGS FOR INTERACTIVE CELL
    EDITING</a></dt>

    <dt><br>
    <a href="#keywords">KEYWORDS</a></dt>

    <dd>tablelist, multi-column, listbox, widget</dd>
  </dl>

  <div align="center">
    <p><a href="#contents">Contents</a>&nbsp;&nbsp;&nbsp;&nbsp; <a href=
    "index.html">Start page</a></p>
  </div>

  <hr>

  <h2><a name="detailed_ref"></a>Detailed Reference</h2>

  <dl>
    <dt><a name="name"></a><b>NAME</b></dt>

    <dd><code>tablelist::tablelist</code> - Create and manipulate tablelist
    widgets</dd>

    <dt><br>
    <a name="synopsis"></a><b>SYNOPSIS</b></dt>

    <dd>
      <pre>
<b>tablelist::tablelist</b> <i>pathName</i> ?<i>options</i>?
</pre>
    </dd>

    <dt><a name="std_options"></a><b>STANDARD OPTIONS</b></dt>

    <dd>
      <pre>
<b>-borderwidth          -highlightthickness  -setgrid
-cursor               -relief              -xscrollcommand
-exportselection      -selectbackground    -yscrollcommand
-highlightbackground  -selectborderwidth
-highlightcolor       -selectforeground</b>
</pre>
    </dd>

    <dd>See the <b>options</b> manual entry for details on the standard
    options.&nbsp; The <code><b>-highlightbackground</b></code>,
    <code><b>-highlightcolor</b></code>, and
    <code><b>-highlightthickness</b></code> options are only supported by the
    Tablelist package, but not by Tablelist_tile.&nbsp; When using the package
    Tablelist_tile, the options <code><b>-selectbackground</b></code>,
    <code><b>-selectborderwidth</b></code>, and
    <code><b>-selectforeground</b></code> have theme-specific default
    values.</dd>

    <dt><br>
    <a name="body_options"></a><b>OPTIONS FOR THE BODY COMPONENT OF THE
    WIDGET</b></dt>

    <dd>
      <pre>
<b>-background  -disabledforeground  -font  -foreground</b>
</pre>
    </dd>

    <dd>These options (described in the <b>options</b> manual entry) are only
    valid for the body component of the tablelist widget.&nbsp; As discussed in
    the next section, the colors and font used when drawing the header labels
    can be different from those specified for the body.&nbsp; When using the
    package Tablelist_tile, these options have theme-specific default
    values.</dd>

    <dt><br>
    <a name="widget_options"></a><b>WIDGET-SPECIFIC OPTIONS</b></dt>

    <dd>
      <br>
      <a name="activestyle"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-activestyle</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;activeStyle</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;ActiveStyle</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies how to diplay the active item or element (depending on the
	value of the <code><b><a href="selecttype">-selecttype</a></b></code>
	configuration option) when the tablelist has the keyboard focus.&nbsp;
	The allowed values are <code><b>frame</b></code>,
	<code><b>none</b></code>, and <code><b>underline</b></code>.&nbsp; The
	value <code><b>frame</b></code> makes the active item or element appear
	surrounded with a thin frame, which looks nice when applied to the
	active element, and also when displaying the active item if all of its
	cells have the same background color.&nbsp; It looks less pretty when
	applied to the active item if the background color of some of its cells
	was changed by using the <code><b><a href=
	"#columnconfigure">columnconfigure</a></b></code> or <code><b><a href=
	"#cellconfigure">cellconfigure</a></b></code> widget command.&nbsp; The
	value <code><b>none</b></code> specifies that no special indication of
	the active item or element is to be performed.&nbsp; The default is
	<code><b>underline</b></code>, which produces the same visual effect as
	in the case of the Tk core listbox.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="arrowcolor"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-arrowcolor</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;arrowColor</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;ArrowColor</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the color to use for the up- or down-arrow placed into a
	column label by the <code><b><a href=
	"#sortbycolumn">sortbycolumn</a></b></code> or <code><b><a href=
	"#sortbycolumnlist">sortbycolumnlist</a></b></code> subcommand of the
	Tcl command associated with the widget.&nbsp; This option is only
	relevant if the value of the <code><b><a href=
	"#showarrow">-showarrow</a></b></code> option is true.&nbsp; The
	default value depends on the windowing system in the Tablelist package
	and on the current theme in Tablelist_tile.&nbsp; For example, if the
	windowing system is <code><b>x11</b></code> then the default is an
	empty string, indicating that the arrow will inherit the background
	color of the label in which it is placed (but is distinguishable from
	the latter, due to its 3-D border and sunken relief, because in this
	case the <code><b><a href="#arrowstyle">-arrowstyle</a></b></code>
	option has the default value <code><b>sunken10x9</b></code>).&nbsp; On
	the windowing system <code><b>win32</b></code>, the default arrow color
	is <code>#aca899</code> for Windows XP and an empty string for older
	Windows versions, paired with the default arrow style
	<code><b>flat9x5</b></code> and <code><b>sunken8x7</b></code>,
	respectively.&nbsp; Finally, for the windowing systems
	<code><b>classic</b></code> and <code><b>aqua</b></code> on the
	Macintosh, the default arrow color is <code>#777777</code> and the
	default arrow style is <code><b>flat7x7</b></code>.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="arrowstyle"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-arrowstyle</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;arrowStyle</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;ArrowStyle</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the relief, width, and height of the up- or down-arrow
	placed into a column label by the <code><b><a href=
	"#sortbycolumn">sortbycolumn</a></b></code> or <code><b><a href=
	"#sortbycolumnlist">sortbycolumnlist</a></b></code> subcommand of the
	Tcl command associated with the widget.&nbsp; This option is only
	relevant if the value of the <code><b><a href=
	"#showarrow">-showarrow</a></b></code> option is true.&nbsp; The
	currently supported values are <code><b>flat7x4</b></code>,
	<code><b>flat7x5</b></code>, <code><b>flat7x7</b></code>,
	<code><b>flat8x5</b></code>, <code><b>flat9x5</b></code>,
	<code><b>sunken8x7</b></code>, <code><b>sunken10x9</b></code>, and
	<code><b>sunken12x11</b></code>.&nbsp; The default value depends on the
	windowing system in the Tablelist package and on the current theme in
	Tablelist_tile; see the description of the <code><b><a href=
	"#arrowcolor">-arrowcolor</a></b></code> option for details.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="arrowdisabledcolor"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-arrowdisabledcolor</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;arrowDisabledColor</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;ArrowDisabledColor</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the color to use for the up- or down-arrow placed into a
	column label by the <code><b><a href=
	"#sortbycolumn">sortbycolumn</a></b></code> or <code><b><a href=
	"#sortbycolumnlist">sortbycolumnlist</a></b></code> subcommand of the
	Tcl command associated with the widget when the tablelist's
	<code><b><a href="#state">state</a></b></code> is
	<code><b>disabled</b></code>.&nbsp; This option is only relevant if the
	value of the <code><b><a href="#showarrow">-showarrow</a></b></code>
	option is true.&nbsp; When the default value of the <code><b><a href=
	"#arrowcolor">-arrowcolor</a></b></code> option is an empty string then
	this is the default for the <code><b>-arrowdisabledcolor</b></code>
	option, too; otherwise the latter's default value equals the default
	foreground color of the header labels in <code><b>disabled</b></code>
	state.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="columns"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-columns</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;columns</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;Columns</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the widths, titles, and alignments of the columns.&nbsp;
	The option's value must be a list of the form</p>

	<blockquote>
	  <pre>
<i>width</i> <i>title</i> ?<i>alignment</i>? <i>width</i> <i>title</i> ?<i>alignment</i>? ...
</pre>
	</blockquote>

	<p>Each <code><i>width</i></code> must be a number.&nbsp; A positive
	value specifies the column's width in average-size characters of the
	widget's font.&nbsp; If <code><i>width</i></code> is negative, its
	absolute value is interpreted as a column width in pixels.&nbsp;
	Finally, a value of zero specifies that the column's width is to be
	made just large enough to hold all the elements in the column,
	including its header (but no larger than the maximum width indicated by
	the <code><b><a href="#col_maxwidth">-maxwidth</a></b></code> column
	configuration option).&nbsp; In all three cases, the effective column
	width will be somewhat greater because of the margins created
	automatically to the left and right of the column.</p>

	<p>Each <code><i>title</i></code> specifies the text to be displayed in
	the column's header, and may optionally be followed in the next list
	element by an <code><i>alignment</i></code>, which specifies how to
	align the elements of the column.&nbsp; Each
	<code><i>alignment</i></code> must be one of <code><b>left</b></code>,
	<code><b>right</b></code>, or <code><b>center</b></code>.&nbsp; The
	default is <code><b>left</b></code>.&nbsp; The
	<code><i>alignment</i></code> also refers to the column's title as long
	as the <code><b><a href="#col_labelalign">-labelalign</a></b></code>
	option hasn't been specified for that column, or if its value is an
	empty string.</p>

	<p>The default value of this option is an empty list, specifying that
	initially the widget has no columns.</p>

	<p><b>REMARK:</b>&nbsp; Whenever possible, you should specify the value
	zero for the column widths, i.e., use <b>dynamic-width</b>
	columns.&nbsp; Besides being more user-friendly, dynamic-width columns
	have the main advantage that they increase the performance of the item
	insertion and sorting quite significantly.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="editendcommand"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-editendcommand</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;editEndCommand</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;EditEndCommand</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies a Tcl command to be invoked on normal termination of the
	interactive editing of a cell's contents if the final text of the
	temporary embedded widget used for the editing is different from its
	initial one.&nbsp; The command is automatically concatenated with the
	name of the tablelist widget, the cell's row and column indices, as
	well as the final contents of the edit window, the resulting script is
	evaluated in the global scope, and the return value becomes the cell's
	new contents after destroying the temporary embedded widget.&nbsp; The
	main purpose of this script is to perform a final validation of the
	edit window's contents.&nbsp; See the description of the
	<code><b><a href=
	"#forceeditendcommand">-forceeditendcommand</a></b></code> option for
	more about the invocation of the command mentioned above, as well as
	the <a href="#cell_editing">INTERACTIVE CELL EDITING</a> section for
	details on the editing process.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="editstartcommand"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-editstartcommand</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;editStartCommand</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;EditStartCommand</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies a Tcl command to be invoked when the interactive editing
	of a cell's contents is started.&nbsp; The command is automatically
	concatenated with the name of the tablelist widget, the cell's row and
	column indices, as well as the text displayed in the cell, the
	resulting script is evaluated in the global scope, and the return value
	becomes the initial contents of the temporary embedded widget used for
	the editing.&nbsp; The main purpose of this script is to define
	validations for the edit window's contents.&nbsp; See the <a href=
	"#cell_editing">INTERACTIVE CELL EDITING</a> section for details on the
	editing process.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="forceeditendcommand"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-forceeditendcommand</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;forceEditEndCommand</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;ForceEditEndCommand</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies a boolean value that controls the invocation of the
	command given by the the <code><b><a href=
	"#editendcommand">-editendcommand</a></b></code> option.&nbsp; If this
	value is true then the command will be invoked on normal termination of
	the editing process even if the final text of the temporary embedded
	widget used for the editing equals its initial one, and will also be
	invoked when the interactive cell editing is canceled (in the latter
	case, the text passed to it as last argument will be the cell's
	original contents, not its final one).&nbsp; The default value of this
	option is <code>0</code>, meaning that the command will only be invoked
	on normal termination of the editing process, if the final text of the
	temporary embedded widget is different from its initial one.&nbsp; See
	the <a href="#cell_editing">INTERACTIVE CELL EDITING</a> section for
	details on the editing process.</p>

	<p>Setting this option to true enables you to execute an arbitrary
	action whenever the interactive cell editing is finished.&nbsp; Just
	binding a script to the <code><b>&lt;Destroy&gt;</b></code> event for
	the temporary embedded widget used for the editing won't work, because
	that widget might be destroyed and recreated automatically under
	various circumstances.&nbsp; Alternately, you can use the
	<code><b>&lt;&lt;TablelistCellUpdated&gt;&gt;</b></code> and
	<code><b>&lt;&lt;TablelistCellRestored&gt;&gt;</b></code> virtual
	events, generated by the <code><b><a href=
	"#finishediting">finishediting</a></b></code> and <code><b><a href=
	"#cancelediting">cancelediting</a></b></code> subcommands,
	respectively.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="height"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-height</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;height</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;Height</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the desired height for the window, in lines.&nbsp; If zero
	or less then the desired height for the window is made just large
	enough to hold the header and all the items in the tablelist
	widget.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="incrarrowtype"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-incrarrowtype</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;incrArrowType</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;IncrArrowType</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the type of the arrow placed into a column label when
	sorting the items based on that column in increasing order, with the
	aid of the <code><b><a href="#sortbycolumn">sortbycolumn</a></b></code>
	or <code><b><a href="#sortbycolumnlist">sortbycolumnlist</a></b></code>
	subcommand of the Tcl command associated with the widget.&nbsp; The
	value of this option must be one of <code><b>up</b></code> or
	<code><b>down</b></code>.&nbsp; The default is
	<code><b>up</b></code>.&nbsp; This option is only relevant if the value
	of the <code><b><a href="#showarrow">-showarrow</a></b></code> option
	is true.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="labelactivebackground"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-labelactivebackground</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;labelActiveBackground</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;Foreground</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the <code><b>-activebackground</b></code> option for the
	header labels, i.e., the background color to use when the mouse cursor
	is positioned over a header label and the value of
	<code><b>tk_strictMotif</b></code> is false.&nbsp; This option is only
	defined in the Tablelist package if the Tk version being used supports
	the <code><b>-activebackground</b></code> option for label
	widgets.&nbsp; This is checked by Tablelist at initialization time, and
	will normally be the case for Tk versions 8.3.2 or higher.&nbsp; On the
	other hand, the Tablelist_tile package doesn't support the
	<code><b>-labelactivebackground</b></code> option.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="labelactiveforeground"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-labelactiveforeground</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;labelActiveForeground</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;Background</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the <code><b>-activeforeground</b></code> option for the
	header labels, i.e., the foreground color to use when the mouse cursor
	is positioned over a header label and the value of
	<code><b>tk_strictMotif</b></code> is false.&nbsp; This option is only
	defined in the Tablelist package if the Tk version being used supports
	the <code><b>-activeforeground</b></code> option for label
	widgets.&nbsp; This is checked by Tablelist at initialization time, and
	will normally be the case for Tk versions 8.3.2 or higher.&nbsp; On the
	other hand, the Tablelist_tile package doesn't support the
	<code><b>-labelactiveforeground</b></code> option.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="labelbackground"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-labelbackground</b></code> or
	  <code><b>-labelbg</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;labelBackground</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;Background</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the <code><b>-background</b></code> option for the header
	labels.&nbsp; In the package Tablelist_tile this option has a
	theme-specific default value.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="labelborderwidth"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-labelborderwidth</b></code> or
	  <code><b>-labelbd</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;labelBorderWidth</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;BorderWidth</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the <code><b>-borderwidth</b></code> option for the header
	labels.&nbsp; This option is different from the standard
	<code><b>-borderwidth</b></code> option defined for the tablelist
	widget itself.&nbsp; In the package Tablelist_tile this option has a
	theme-specific default value.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="labelcommand"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-labelcommand</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;labelCommand</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;LabelCommand</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the Tcl command to be invoked when mouse button 1 is
	pressed over one of the header labels and later released over the same
	label.&nbsp; When the <code><b>&lt;ButtonRelease-1&gt;</b></code> event
	occurs, the command is automatically concatenated with the name of the
	tablelist widget and the column index of the respective label, and the
	resulting script is evaluated in the global scope.&nbsp; If the
	tablelist's <code><b><a href="#state">state</a></b></code> is
	<code><b>disabled</b></code> then this action will not take
	place.&nbsp; The most common value of this option is <code><b><a href=
	"tablelistColSort.html#sortByColumn">tablelist::sortByColumn</a></b></code>;
	this command sorts the items based on the column whose index was passed
	to it as second argument.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="labelcommand2"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-labelcommand2</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;labelCommand2</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;LabelCommand2</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the Tcl command to be invoked when mouse button 1 is
	pressed together with the <code>Shift</code> key over one of the header
	labels and later released over the same label.&nbsp; When the
	<code><b>&lt;ButtonRelease-1&gt;</b></code> event occurs, the command
	is automatically concatenated with the name of the tablelist widget and
	the column index of the respective label, and the resulting script is
	evaluated in the global scope.&nbsp; If the tablelist's
	<code><b><a href="#state">state</a></b></code> is
	<code><b>disabled</b></code> then this action will not take
	place.&nbsp; The most common value of this option is <code><b><a href=
	"tablelistColSort.html#addToSortColumns">tablelist::addToSortColumns</a></b></code>;
	this command adds the column index passed to it as second argument to
	the list of sort columns and sorts the items based on the columns
	indicated by the modified list.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="labeldisabledforeground"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-labeldisabledforeground</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;labelDisabledForeground</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;DisabledForeground</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the <code><b>-disabledforeground</b></code> option for the
	header labels, i.e., the foreground color to use for the labels when
	the tablelist's <code><b><a href="#state">state</a></b></code> is
	<code><b>disabled</b></code>.&nbsp; This option is only defined in the
	Tablelist package if the Tk version being used supports the
	<code><b>-disabledforeground</b></code> option for label widgets.&nbsp;
	This is checked by Tablelist at initialization time, and will normally
	be the case for Tk versions 8.3.1 or higher.&nbsp; On the other hand,
	the Tablelist_tile package doesn't support the
	<code><b>-labeldisabledforeground</b></code> option.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="labelfont"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-labelfont</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;labelFont</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;Font</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the <code><b>-font</b></code> option for the header
	labels.&nbsp; In the package Tablelist_tile this option has a
	theme-specific default value.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="labelforeground"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-labelforeground</b></code> or
	  <code><b>-labelfg</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;labelForeground</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;Foreground</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the <code><b>-foreground</b></code> option for the header
	labels.&nbsp; In the package Tablelist_tile this option has a
	theme-specific default value.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="labelheight"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-labelheight</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;labelHeight</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;Height</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the <code><b>-height</b></code> option for the header
	labels.&nbsp; This option is only supported by the Tablelist package,
	but not by Tablelist_tile.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="labelpady"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-labelpady</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;labelPadY</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;Pad</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>In the Tablelist package this option specifies the
	<code><b>-pady</b></code> configuration option for the header
	labels.&nbsp; In the Tablelist_tile package the value of the
	<code><b>-labelpady</b></code> option is mapped to the corresponding
	components of the value of the <code><b>-padding</b></code>
	configuration option of the header labels, and the
	<code><b>-labelpady</b></code> option has a theme-specific default
	value.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="labelrelief"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-labelrelief</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;labelRelief</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;Relief</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the <code><b>-relief</b></code> option for the header
	labels.&nbsp; This option is different from the standard
	<code><b>-relief</b></code> option defined for the tablelist widget
	itself.&nbsp; The default value is <code><b>raised</b></code>.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="listvariable"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-listvariable</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;listVariable</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;Variable</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the name of a variable.&nbsp; The value of the variable is
	a list to be displayed inside the widget; if the variable value changes
	then the widget will automatically update itself to reflect the new
	value.&nbsp; The value of the variable must be a valid list.&nbsp; Each
	list element corresponds to a row within the widget, and must be a
	valid list itself; its elements correspond to the cells within the
	respective row.&nbsp; Attempts to assign a variable whose value does
	not fulfil these conditions to <code><b>-listvariable</b></code> will
	cause an error.&nbsp; Attempts to unset a variable in use as a
	<code><b>-listvariable</b></code> will fail but will not generate an
	error.</p>

	<p><b>REMARK:</b>&nbsp; For increased efficiency, updating the widget
	to reflect a changed value of the variable specified with this option
	is, whenever possible, done at idle time (i.e., when there are no
	events to process).&nbsp; On the other hand, most tablelist subcommands
	make it necessary to perform an <i>immediate</i> update of the widget's
	internal list according to the value of this variable, before executing
	the subcommand in question.&nbsp; Doing this repeatedly can become
	quite inefficient.&nbsp; To avoid performance problems, you should
	always try to separate the operations that build up the value of the
	variable specified by this option from other commands.&nbsp; For
	example, instead of</p>

	<blockquote>
	  <pre>
tablelist::tablelist .tbl ... -listvariable var
set var {}
for {set row 0} {$row &lt; 1000} {incr row} {
    lappend var ...
    .tbl cellconfigure $row,3 -image ...
}
</pre>
	</blockquote>

	<p>you should write</p>

	<blockquote>
	  <pre>
tablelist::tablelist .tbl ... -listvariable var
set var {}
for {set row 0} {$row &lt; 1000} {incr row} {
    lappend var ...
}
for {set row 0} {$row &lt; 1000} {incr row} {
    .tbl cellconfigure $row,3 -image ...
}
</pre>
	</blockquote>

	<p>The first method above is quite inefficient, because it requires
	1000 updates of the widget's internal list.&nbsp; The second method
	performs incomparably faster, because it needs only one synchronization
	(at the beginning of the second loop).</p>
      </blockquote>
    </dd>

    <dd>
      <a name="movablecolumns"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-movablecolumns</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;movableColumns</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;MovableColumns</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies a boolean value that determines whether the columns can be
	moved interactively.&nbsp; See the <a href="#label_bindings">DEFAULT
	BINDINGS FOR THE HEADER LABELS</a> section below for information on
	moving a column interactively.&nbsp; The default value is
	<code>0</code>.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="movablerows"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-movablerows</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;movableRows</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;MovableRows</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies a boolean value that determines whether the rows can be
	moved interactively.&nbsp; See the <a href="#body_bindings">DEFAULT AND
	INDIVIDUAL BINDINGS FOR THE TABLELIST BODY</a> section below for
	information on moving a row interactively.&nbsp; The default value is
	<code>0</code>.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="movecolumncursor"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-movecolumncursor</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;moveColumnCursor</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;MoveColumnCursor</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the mouse cursor to be used when moving a column
	interactively.&nbsp; The default value is <code><b>icon</b></code>.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="movecursor"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-movecursor</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;moveCursor</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;MoveCursor</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the mouse cursor to be used when moving a row
	interactively.&nbsp; The default value is
	<code><b>hand2</b></code>.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="protecttitlecolumns"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-protecttitlecolumns</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;protectTitleColumns</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;ProtectTitleColumns</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies a boolean value that determines whether the boundary of
	the title column area shall be protected from being crossed when moving
	a column interactively.&nbsp; See the <a href="#label_bindings">DEFAULT
	BINDINGS FOR THE HEADER LABELS</a> section below for information on
	moving a column interactively.&nbsp; The default value is
	<code>0</code>, specifying that non-title columns can be moved into the
	title column area and vice-versa.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="resizablecolumns"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-resizablecolumns</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;resizableColumns</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;ResizableColumns</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies a boolean value that determines whether the columns can be
	resized interactively.&nbsp; See the <a href="#label_bindings">DEFAULT
	BINDINGS FOR THE HEADER LABELS</a> section below for information on
	interactive column resizing.&nbsp; The default value is
	<code>1</code>.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="resizecursor"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-resizecursor</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;resizeCursor</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;ResizeCursor</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the mouse cursor to be used during interactive column
	resizing.&nbsp; The default value is
	<code><b>sb_h_double_arrow</b></code>.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="selectmode"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-selectmode</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;selectMode</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;SelectMode</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies one of several styles for manipulating the
	selection.&nbsp; The value of the option may be arbitrary, but the
	default bindings expect it to be either <code><b>single</b></code>,
	<code><b>browse</b></code>, <code><b>multiple</b></code>, or
	<code><b>extended</b></code>.&nbsp; The default value is
	<code><b>browse</b></code>.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="selecttype"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-selecttype</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;selectType</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;SelectType</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies one of two selection types for the tablelist widget:
	<code><b>row</b></code> or <code><b>cell</b></code>.&nbsp; If the
	selection type is <code><b>row</b></code> then the default bindings
	will select and deselect entire items, and the whole row having the
	location cursor will be displayed as active when the tablelist has the
	keyboard focus.&nbsp; If the selection type is <code><b>cell</b></code>
	then the default bindings will select and deselect individual elements,
	and the single cell having the location cursor will be displayed as
	active when the tablelist has the keyboard focus.&nbsp; The default
	value is <code><b>row</b></code>.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="setfocus"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-setfocus</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;setFocus</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;SetFocus</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies a boolean value that determines whether a click with the
	left mouse button anywhere into the tablelist's body, including the
	separators and the embedded images (more precisely, any descendants of
	the tablelist widget having the binding tag <code><b><a href=
	"#body_bindings">TablelistBody</a></b></code>) should set the focus to
	the body of the tablelist widget.&nbsp; The default value is
	<code>0</code>.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="showarrow"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-showarrow</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;showArrow</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;ShowArrow</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies a boolean value that determines whether the
	<code><b><a href="#sortbycolumn">sortbycolumn</a></b></code> and
	<code><b><a href="#sortbycolumnlist">sortbycolumnlist</a></b></code>
	subcommands of the Tcl command associated with the widget should place
	an arrow indicating the sort order into the header label(s) of the
	column(s) specified by their first argument.&nbsp; The default value is
	<code>1</code>.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="showlabels"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-showlabels</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;showLabels</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;ShowLabels</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies a boolean value that determines whether the header labels
	are to be shown or not.&nbsp; The default value is <code>1</code>.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="showseparators"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-showseparators</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;showSeparators</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;ShowSeparators</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies a boolean value that determines whether the columns are to
	be separated with borders.&nbsp; The default value is
	<code>0</code>.&nbsp; The separators are implemented as thin frames
	with sunken relief in the package Tablelist, and as tile separator
	widgets in the package Tablelist_tile.&nbsp; They are attached to the
	right edges of the header labels, and are only created if the value of
	this option is true.&nbsp; There is no support for horizontal
	separators in tablelist widgets, but a nice distinguishing effect for
	the rows can be achieved with the aid of the <code><b><a href=
	"#stripebackground">-stripebackground</a></b></code> option discussed
	below.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="snipstring"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-snipstring</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;snipString</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;SnipString</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the string to be used as snip indicator when displaying
	the elements that don't fit into their cells.&nbsp; The default is an
	ellipsis (<code>"..."</code>).</p>
      </blockquote>
    </dd>

    <dd>
      <a name="sortcommand"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-sortcommand</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;sortCommand</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;SortCommand</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies a command to be used for the comparison of the items when
	invoking the <code><b><a href="#sort">sort</a></b></code> subcommand of
	the Tcl command associated with the tablelist widget.&nbsp; To compare
	two items (viewed as lists of cell contents within one row each) during
	the <code><b>sort</b></code> operation, the command is automatically
	concatenated with the two items and the resulting script is
	evaluated.&nbsp; The script should return an integer less than, equal
	to, or greater than zero if the first item is to be considered less
	than, equal to, or greater than the second, respectively.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="spacing"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-spacing</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;spacing</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;Spacing</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies additional space to provide above and below each row of
	the widget.&nbsp; The option's value may have any of the standard forms
	for screen distances.&nbsp; It defaults to <code>0</code>.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="state"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-state</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;state</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;State</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies one of two states for the tablelist widget:
	<code><b>normal</b></code> or <code><b>disabled</b></code>.&nbsp; If
	the widget is disabled then neither items nor columns may be inserted,
	deleted, updated, or moved, the items, header labels, and the up- or
	down-arrow are drawn in the <code><b><a href=
	"#body_options">-disabledforeground</a></b></code>, <code><b><a href=
	"#labeldisabledforeground">-labeldisabledforeground</a></b></code>, and
	<code><b><a href=
	"#arrowdisabledcolor">-arrowdisabledcolor</a></b></code> color,
	respectively, the selection cannot be modified and is not shown
	(although the selection information is retained), the header labels are
	completely insensitive, and no interactive cell editing can be
	performed.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="stretch"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-stretch</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;stretch</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;Stretch</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the columns to be stretched in order to fill the tablelist
	window if necessary.&nbsp; The option's value may be
	<code><b>all</b></code> or a list of column indices in any of the forms
	described in the <a href="#col_indices">COLUMN INDICES</a> section
	below.&nbsp; In the second case, the specified column indices are
	replaced with their numerical equivalents, except for the index
	<code><b>end</b></code>, which is viewed as a dynamic column index
	whose numerical equivalent might change during program execution and
	therefore will be recomputed every time the columns are
	stretched.&nbsp; The list will be updated automatically whenever
	columns are inserted, deleted, or moved.&nbsp; The number of pixels by
	which a column is stretched is proportional to its width in
	pixels.&nbsp; The default value of this option is an empty list,
	meaning that no column will be stretched to eliminate the blank space
	that might appear at the right of the table.&nbsp; (Note that the blank
	space following the header labels is filled with a dummy, insensitive
	label having the same background, borderwidth, and relief as the
	"normal" header labels.)&nbsp; This option is ignored if the value of
	the <code><b><a href="#width">-width</a></b></code> configuration
	option is zero or less.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="stripebackground"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-stripebackground</b></code> or
	  <code><b>-stripebg</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;stripeBackground</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;Background</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the background color to use when displaying the items
	belonging to a stripe.&nbsp; Each stripe is composed of the same number
	<code>stripeHeight</code> of consecutive non-hidden items, according to
	the value of the <code><b><a href=
	"#stripeheight">-stripeheight</a></b></code> configuration
	option.&nbsp; The first <code>stripeHeight</code> non-hidden items are
	"normal" ones; they are followed by a stripe composed of the next
	<code>stripeHeight</code> non-hidden items, which in turn is followed
	by the same number of "normal" non-hidden items, and so on.&nbsp; In
	the Tablelist package and in most themes supported by Tablelist_tile,
	the default value is an empty string, indicating that the stripes will
	inherit the background color specified by the <code><b><a href=
	"#body_options">-background</a></b></code> configuration option.&nbsp;
	When using Tablelist_tile with the <code><b>tileqt</b></code> theme
	then the default value is given by the global KDE option
	<code><b>alternateBackground</b></code>, which in turn depends on the
	current color scheme.&nbsp; In this case it is recommended to either
	keep that default value retrieved from KDE, or to use an explicitly
	specified empty string if no stripes are to be displayed.&nbsp; The
	<code><b>-stripebackground</b></code> option has a higher priority than
	the <code><b>-background</b></code> column configuration option, but a
	lower priority than the <code><b>-background</b></code> option
	specified at row or cell level.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="stripeforeground"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-stripeforeground</b></code> or
	  <code><b>-stripefg</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;stripeForeground</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;Foreground</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the foreground color to use when displaying the items
	belonging to a stripe.&nbsp; Each stripe is composed of the same number
	<code>stripeHeight</code> of consecutive non-hidden items, according to
	the value of the <code><b><a href=
	"#stripeheight">-stripeheight</a></b></code> configuration
	option.&nbsp; The first <code>stripeHeight</code> non-hidden items are
	"normal" ones; they are followed by a stripe composed of the next
	<code>stripeHeight</code> non-hidden items, which in turn is followed
	by the same number of "normal" non-hidden items, and so on.&nbsp; The
	default value is an empty string, indicating that the stripes will
	inherit the foreground color specified by the <code><b><a href=
	"#body_options">-foreground</a></b></code> configuration option.&nbsp;
	The <code><b>-stripeforeground</b></code> option has a higher priority
	than the <code><b>-foreground</b></code> column configuration option,
	but a lower priority than the <code><b>-foreground</b></code> option
	specified at row or cell level.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="stripeheight"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-stripeheight</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;stripeHeight</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;StripeHeight</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the number of items in each stripe.&nbsp; If zero or less
	then no stripes are displayed.&nbsp; The default is <code>1</code>.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="takefocus"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-takefocus</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;takeFocus</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;TakeFocus</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>This option determines whether the widget accepts the focus during
	keyboard traversal.&nbsp; It is almost identical to the standard option
	with the same name (see the <b>options</b> manual entry for
	details).&nbsp; The only difference is that not the widget itself but
	its body child (containing the items) will receive the focus during
	keyboard traversal with the standard keys (<code>Tab</code> and
	<code>Shift-Tab</code>).</p>
      </blockquote>
    </dd>

    <dd>
      <a name="targetcolor"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-targetcolor</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;targetColor</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;TargetColor</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the color of the temporary gap displayed in the
	tablelist's body or header to indicate the target position when moving
	a row or column interactively.&nbsp; The default value is
	<code><b>black</b></code>.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="titlecolumns"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-titlecolumns</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;titleColumns</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;TitleColumns</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the number of the non-scrollable columns at the left edge
	of the window, also called <b>title columns</b>.&nbsp; The positions of
	these columns will not change when adjusting the horizontal view by
	invoking the <code><b><a href="#scan">scan</a></b></code>,
	<code><b><a href="#seecell">seecell</a></b></code>, <code><b><a href=
	"#seecolumn">seecolumn</a></b></code>, or <code><b><a href=
	"#xview">xview</a></b></code> subcommand.&nbsp; The default value is
	<code>0</code>.&nbsp; The value of this option also determines the
	scrolling unit used by the commands mentioned above when shifting the
	horizontal view: if it is positive then the horizontal scrolling is
	performed column-wise, otherwise by character units (the width of the
	<code><b>0</b></code> character).</p>

	<p>The end of the title column area is visualized with the aid of a
	separator, attached to the right edge of the header label corresponding
	to the last non-hidden title column.&nbsp; This special separator is
	always displayed to mark the end of the title columns (if any),
	independently of the value of the <code><b><a href=
	"#showseparators">-showseparators</a></b></code> option.&nbsp; The user
	can easily distinguish it from the other separators by means of its
	background color, which is different from that of the other separator
	frames.</p>

	<p>For technical reasons (the use of the <code><b>-elide</b></code>
	option for a text widget tag), this option is not supported for Tk
	versions earlier than 8.3.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="tooltipaddcommand"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-tooltipaddcommand</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;tooltipAddCommand</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;TooltipAddCommand</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies a Tcl command to be used for displaying cell- and column
	label-specific balloon help.&nbsp; When the mouse pointer enters a
	cell, the command is automatically concatenated with the name of the
	tablelist widget and the cell's row and column indices, and the
	resulting script is evaluated in the global scope.&nbsp; Similarly,
	when the mouse pointer enters a header label, the command is
	automatically concatenated with the name of the tablelist widget, the
	number <code>-1</code>, and the column index of the respective label,
	and the resulting script is evaluated in the global scope.&nbsp; In
	both cases, the action described above is only triggered if both the
	value of this option and that of <code><b><a href=
	"#tooltipdelcommand">-tooltipdelcommand</a></b></code> are nonempty
	strings.</p>

	<p>For example, consider the procedure <code>tooltipAddCmd</code> shown
	below, which makes use of the <code>DynamicHelp::add</code> command
	from the BWidget package to display the full cell and label texts as
	tooltips for the cells and header labels with snipped contents.</p>

	<blockquote>
	  <pre>
proc tooltipAddCmd {tbl row col} {
    if {($row &gt;= 0 &amp;&amp; [$tbl iselemsnipped $row,$col fullText]) ||
	($row &lt;  0 &amp;&amp; [$tbl istitlesnipped $col fullText])} {
	DynamicHelp::add $tbl -text $fullText
    }
}
</pre>
	</blockquote>

	<p>A tablelist widget can use this procedure by specifying</p>

	<blockquote>
	  <pre>
-tooltipaddcommand tooltipAddCmd -tooltipdelcommand DynamicHelp::delete
</pre>
	</blockquote>

	<p>If you prefer to use the <code>tooltip::tooltip</code> command from
	the tooltip package contained in tklib then the procedure becomes</p>

	<blockquote>
	  <pre>
proc tooltipAddCmd {tbl row col} {
    if {($row &gt;= 0 &amp;&amp; [$tbl iselemsnipped $row,$col fullText]) ||
	($row &lt;  0 &amp;&amp; [$tbl istitlesnipped $col fullText])} {
	tooltip::tooltip $tbl $fullText
    }
}
</pre>
	</blockquote>

	<p>and can be used by specifying</p>

	<blockquote>
	  <pre>
-tooltipaddcommand tooltipAddCmd -tooltipdelcommand "tooltip::tooltip clear"
</pre>
	</blockquote>

	<p>Both versions above make use of the <code><b><a href=
	"#iselemsnipped">iselemsnipped</a></b></code> and <code><b><a href=
	"#istitlesnipped">istitlesnipped</a></b></code> subcommands, to make
	sure that the full cell and label texts will only be displayed for
	those cells and header labels whose contents are snipped.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="tooltipdelcommand"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-tooltipdelcommand</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;tooltipDelCommand</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;TooltipDelCommand</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies a Tcl command to be used for removing the cell- or column
	label-specific balloon help.&nbsp; When the mouse pointer leaves a cell
	or a header label, the command specified by this option is
	automatically concatenated with the name of the tablelist widget and
	the resulting script is evaluated in the global scope.&nbsp; This
	action is only triggered if both the value of this option and that of
	<code><b><a href="#tooltipaddcommand">-tooltipaddcommand</a></b></code>
	are nonempty strings.&nbsp; Common values for this option are
	<code>"DynamicHelp::delete"</code> (which requires the BWidget package)
	and&nbsp; <code>"tooltip::tooltip clear"</code>&nbsp; (which requires
	the tooltip package contained in tklib).&nbsp; Their usage is shown in
	the examples above.</p>
      </blockquote>
    </dd>

    <dd>
      <a name="width"></a>
      <table border="0" cellpadding="0" cellspacing="0">
	<tr>
	  <td>Command-Line Name:&nbsp;</td>
	  <td><code><b>-width</b></code></td>
	</tr>

	<tr>
	  <td>Database Name:</td>
	  <td><code><b>&nbsp;width</b></code></td>
	</tr>

	<tr>
	  <td>Database Class:</td>
	  <td><code><b>&nbsp;Width</b></code></td>
	</tr>
      </table>

      <blockquote>
	<p>Specifies the desired width for the window, in average-size
	characters of the widget's font.&nbsp; If zero or less then the desired
	width for the window is made just large enough to hold all the columns
	in the tablelist widget.</p>
      </blockquote>
    </dd>

    <dt><a name="description"></a><b>DESCRIPTION</b></dt>

    <dd>The <code><b>tablelist::tablelist</b></code> command creates a new
    window named <code><i>pathName</i></code> and of the class
    <code><b>Tablelist</b></code>, and makes it into a <b>tablelist</b>
    widget.&nbsp; Additional options, described above, may be specified on the
    command line or in the option database to configure aspects of the
    tablelist such as its colors, font, and columns.&nbsp; The
    <code><b>tablelist::tablelist</b></code> command returns its
    <code><i>pathName</i></code> argument.&nbsp; At the time this command is
    invoked, there must not exist a window named <code><i>pathName</i></code>,
    but <code><i>pathName</i></code>'s parent must exist.</dd>

    <dd><br>
    A tablelist is a multi-column listbox, implemented as a mega-widget,
    consisting of a <b>body</b> and a <b>header</b>.&nbsp; The body displays a
    list of <b>items</b>, one per line.&nbsp; Each item is a list of
    <b>elements</b>, which are aligned in columns.&nbsp; In other words, an
    item is the contents of a row, and an element is the text contained in a
    cell.&nbsp; The header consists of label widgets displaying the column
    titles.&nbsp; The labels can be used, among others, for interactive column
    resizing and column-based sorting of the items, as described below.</dd>

    <dd><br>
    Each cell and each header label of a tablelist widget can also contain an
    image, which is placed to the left or right of the text, depending on the
    column's alignment.&nbsp; Instead of an image, a tablelist cell can also
    contain an embedded window, placed to the left or right of the text, just
    like an embedded image.</dd>

    <dd><br>
    The elements of a tablelist widget can, per default, be only edited
    programmatically.&nbsp; However, interactive editing can be enabled for
    individual cells and for entire columns.&nbsp; Per default, the interactive
    cell editing uses a temporary embedded entry widget, thus making sure that
    all the validation facilities available for entry widgets can be used
    during the editing process.&nbsp; A great variety of widgets from the
    packages BWidget, Iwidgets, combobox (by Bryan Oakley), and Mentry (or
    Mentry_tile), as well as Tk core text, spinbox and checkbutton widgets
    along with tile entry, combobox, and checkbutton widgets are also supported
    as temporary embedded widgets used for cell editing.&nbsp; In addition, a
    rich set of keyboard bindings is provided for a comfortable navigation
    between the editable cells.</dd>

    <dd><br>
    When first created, a new tablelist widget has no items.&nbsp; Items may be
    added, deleted, or updated using widget commands described below.&nbsp; In
    addition, one or more items or elements may be selected.&nbsp; If a
    tablelist widget is exporting its selection (see the
    <code><b>-exportselection</b></code> option), then it will observe the
    standard X11 protocols for handling the selection.&nbsp; Tablelist widget
    selections are available as types <code><b>STRING</b></code> and
    <code><b>UTF8_STRING</b></code>; the value of the selection will be a text
    built by taking all of the rows having at least one non-hidden selected
    element, joining these elements together with tabs, and the resulting
    strings in turn with newlines.&nbsp; If a tablelist widget that is
    exporting its selection is the selection owner and some other window claims
    ownership of the selection away from it, then the virtual event
    <code><b>&lt;&lt;TablelistSelectionLost&gt;&gt;</b></code> is
    generated.</dd>

    <dd><br>
    It is not necessary for all the elements to be displayed in the tablelist
    widget at once; commands described below may be used to change the view in
    the window.&nbsp; Tablelist widgets allow scrolling in both directions
    using the standard <code><b>-xscrollcommand</b></code> and
    <code><b>-yscrollcommand</b></code> options.&nbsp; They also support
    scanning, as described below.</dd>

    <dd><br>
    Each tablelist widget may have any number of <b>attributes</b>, which can
    be used in commands that create or manipulate tablelist widgets for
    particular purposes.</dd>

    <dt><br>
    <a name="colors_and_fonts"></a><b>COLORS AND FONTS</b></dt>

    <dd>
      The <code><b>-background</b></code>, <code><b>-font</b></code>,
      <code><b>-foreground</b></code>, <code><b>-selectbackground</b></code>,
      and <code><b>-selectforeground</b></code> options can also be specified
      at column, row, and cell level, by using the <code><b><a href=
      "#columnconfigure">columnconfigure</a></b></code>, <code><b><a href=
      "#rowconfigure">rowconfigure</a></b></code>, and <code><b><a href=
      "#cellconfigure">cellconfigure</a></b></code> subcommands of the Tcl
      command associated with the tablelist widget.&nbsp; For this reason, a
      particular cell can have up to four values for one and the same color or
      font option.&nbsp; If these values conflict, then the option specified at
      the highest priority level is used.&nbsp; The decreasing priority order
      is cell, row, column, widget.&nbsp;

      <p>If one of these options hasn't been specified at cell, row, or column
      level, or if its value for that level is an empty string (this is
      explicitly allowed), then that option will not be used at that particular
      level.</p>
    </dd>

    <dt><a name="col_options"></a><b>COLUMN CONFIGURATION OPTIONS</b></dt>

    <dd>The following options are currently supported by the <code><b><a href=
    "#columncget">columncget</a></b></code>, <code><b><a href=
    "#columnconfigure">columnconfigure</a></b></code>, <code><b><a href=
    "#configcolumnlist">configcolumnlist</a></b></code>, and <code><b><a href=
    "#configcolumns">configcolumns</a></b></code> commands:</dd>

    <dd>
      <dl>
	<dt><br>
	<a name="col_align"></a><code><b>-align</b>
	<i>alignment</i></code></dt>

	<dd>Specifies how to align the elements of the column.&nbsp; It must be
	one of <code><b>left</b></code>, <code><b>right</b></code>, or
	<code><b>center</b></code>.&nbsp; This option also refers to the
	column's title if the <code><b><a href=
	"#col_labelalign">-labelalign</a></b></code> option hasn't been
	specified for the given column, or if its value is an empty
	string.&nbsp; The <code><b>-align</b></code> option is tied to the
	<code><i>alignment</i></code> element corresponding to this column in
	the list specifying the value of the <code><b><a href=
	"#columns">-columns</a></b></code> option for the tablelist widget;
	changes in either will automatically be reflected in the other.</dd>

	<dt><br>
	<a name="col_background"></a><code><b>-background</b>
	<i>color</i></code> or <code><b>-bg</b> <i>color</i></code></dt>

	<dd>Specifies the normal background color to use when displaying the
	contents of the column.</dd>

	<dt><br>
	<a name="col_changesnipside"></a><code><b>-changesnipside</b>
	<i>boolean</i></code></dt>

	<dd>Specifies whether to override the alignment-specific default
	position of the <a href="#snipstring">snip indicator</a> when
	displaying the elements of the column (excluding its title).&nbsp; The
	default value is <code>0</code>, meaning that the snip string will be
	appended to the elements if the column's alignment is
	<code><b>left</b></code> or <code><b>center</b></code> and prepended to
	them in case the alignment is <code><b>right</b></code>.</dd>

	<dt><br>
	<a name="col_editable"></a><code><b>-editable</b>
	<i>boolean</i></code></dt>

	<dd>Specifies whether the elements of the column can be edited
	interactively.&nbsp; The default value is <code>0</code>.&nbsp; The
	value of this option can be overridden for individual cells by using
	the cell configuration option with the same name.</dd>

	<dt><br>
	<a name="col_editwindow"></a><code><b>-editwindow</b>
	<i>name</i></code></dt>

	<dd>Specifies the type of the temporary embedded widget to be used for
	interactive editing of the contents of the given column's cells.&nbsp;
	<code><i>name</i></code> may be one of <code><b>entry</b></code> (which
	is the default), <code><b>text</b></code>, <code><b>spinbox</b></code>
	(the latter for Tk version 8.4 or higher),
	<code><b>checkbutton</b></code>, <code><b>ttk::entry</b></code>,
	<code><b>ttk::combobox</b></code>, or
	<code><b>ttk::checkbutton</b></code> (the latter three only in the
	presence of the tile widget engine), or the value returned by one of
	the registration commands for widgets from the packages <a href=
	"tablelistBWidget.html">BWidget</a>, <a href=
	"tablelistIwidgets.html">Iwidgets</a>, <a href=
	"tablelistCombobox.html">combobox</a> (by Bryan Oakley), and <a href=
	"tablelistMentry.html">Mentry (or Mentry_tile)</a>.&nbsp; For example,
	you can use&nbsp; <code><b>-editwindow ComboBox</b></code>&nbsp;
	<i>after</i> registering the ComboBox widget for interactive cell
	editing with the aid of the <code><b><a href=
	"tablelistBWidget.html#ComboBox">tablelist::addBWidgetComboBox</a></b></code>
	command.&nbsp; Similarly, you can use&nbsp; <code><b>-editwindow
	combobox</b></code>&nbsp; <i>after</i> registering Bryan Oakley's
	combobox widget for interactive cell editing by invoking the
	<code><b><a href=
	"tablelistCombobox.html#combobox">tablelist::addOakleyCombobox</a></b></code>
	command.&nbsp; The value of this option can be overridden for
	individual cells by using the cell configuration option with the same
	name.</dd>

	<dt><br>
	<a name="col_font"></a><code><b>-font</b> <i>font</i></code></dt>

	<dd>Specifies the font to use when displaying the contents of the
	column.</dd>

	<dt><br>
	<a name="col_foreground"></a><code><b>-foreground</b>
	<i>color</i></code> or <code><b>-fg</b> <i>color</i></code></dt>

	<dd>Specifies the normal foreground color to use when displaying the
	contents of the column.</dd>

	<dt><br>
	<a name="col_formatcommand"></a><code><b>-formatcommand</b>
	<i>command</i></code></dt>

	<dd>
	  Specifies the Tcl command to be invoked when displaying the contents
	  of a cell within this column or adding them to the selection when the
	  latter is being exported.&nbsp; If <code><i>command</i></code> is a
	  nonempty string, then it is automatically concatenated with the
	  cell's text, the resulting script is evaluated in the global scope,
	  and the return value is displayed in the cell or added to the
	  selection instead of the original data.&nbsp; For example, if a time
	  value in seconds is being inserted into the cell and
	  <code><i>command</i></code> is the procedure <code>formatDate</code>
	  defined as

	  <blockquote>
	    <pre>
proc formatDate clockVal {
    return [clock format $clockVal -format "%Y-%m-%d"]
}
</pre>
	  </blockquote>

	  <p>then the text displayed in the cell will be the date in the
	  specified format, not the time value in seconds.&nbsp; Notice that
	  this option is only used for preparing the text to be displayed or
	  returned when exporting the selection, and does not affect the
	  internal cell contents.&nbsp; For example, the <code><b><a href=
	  "#get">get</a></b></code>, <code><b><a href=
	  "#getcolumns">getcolumns</a></b></code>, <code><b><a href=
	  "#getcells">getcells</a></b></code>, <code><b><a href=
	  "#rowcget">rowcget</a></b></code>, <code><b><a href=
	  "#columncget">columncget</a></b></code>, <code><b><a href=
	  "#cellcget">cellcget</a></b></code>, <code><b><a href=
	  "#sort">sort</a></b></code>, <code><b><a href=
	  "#sortbycolumn">sortbycolumn</a></b></code>, and <code><b><a href=
	  "#sortbycolumnlist">sortbycolumnlist</a></b></code> subcommands all
	  operate on the original cell text, which is contained in the widget's
	  internal list.&nbsp; In the case of the above example, this will make
	  it possible to sort the items very easily by time, with a second's
	  precision, even if their visual representation only contains the
	  year, month, and day.</p>

	  <p>The <code><b>-formatcommand</b></code> option comes in handy if
	  only images or embedded windows are to be displayed in a column but
	  the texts associated with the cells may not simply be empty strings
	  because they are needed for other purposes (like sorting or
	  editing).&nbsp; In such cases, a procedure returning an empty string
	  can be used as the option's value, thus making sure that the textual
	  information contained in that column remains hidden.</p>
	</dd>

	<dt><a name="col_hide"></a><code><b>-hide</b>
	<i>boolean</i></code></dt>

	<dd>Specifies whether to hide the column when displaying the widget or
	exporting its selection.&nbsp; The default value is
	<code>0</code>.</dd>

	<dt><br>
	<a name="col_labelalign"></a><code><b>-labelalign</b>
	<i>alignment</i></code></dt>

	<dd>Specifies how to align the column's title.&nbsp; It must be one of
	<code><b>left</b></code>, <code><b>right</b></code>, or
	<code><b>center</b></code>, or an empty string.&nbsp; If this option
	hasn't been specified for the given column, or if its value is an empty
	string, then the header title will have the same alignment as the
	elements of the column, as given by the <code><b><a href=
	"#col_align">-align</a></b></code> column configuration option or by
	the <code><i>alignment</i></code> element corresponding to this column
	in the list specifying the value of the <code><b><a href=
	"#columns">-columns</a></b></code> global option.</dd>

	<dt><br>
	<a name="col_labelopts"></a><code><b>-labelbackground</b>
	<i>color</i></code> or <code><b>-labelbg</b> <i>color</i></code><br>
	<code><b>-labelborderwidth</b> <i>screenDistance</i></code> or
	<code><b>-labelbd</b> <i>screenDistance</i></code><br>
	<code><b>-labelcommand</b> <i>command</i></code><br>
	<code><b>-labelcommand2</b> <i>command</i></code><br>
	<code><b>-labelfont</b> <i>fontName</i></code><br>
	<code><b>-labelforeground</b> <i>color</i></code> or
	<code><b>-labelfg</b> <i>color</i></code><br>
	<code><b>-labelheight</b> <i>lines</i></code><br>
	<code><b>-labelpady</b> <i>screenDistance</i></code><br>
	<code><b>-labelrelief</b> <i>relief</i></code></dt>

	<dd>The value of each of these options may also be an empty
	string.&nbsp; These options are the column-specific equivalents of the
	global ones having the same names, described in the <a href=
	"#widget_options">WIDGET-SPECIFIC OPTIONS</a> section.&nbsp; They
	override the options with the same names set at widget level if the
	specified value is not empty.&nbsp; If one of these options hasn't been
	specified for the given column, or if its value is an empty string,
	then that option will not be used at column level; the global option
	with the same name will be used instead.&nbsp; The <code><b><a href=
	"#labelactivebackground">-labelactivebackground</a></b></code>,
	<code><b><a href=
	"#labelactiveforeground">-labelactiveforeground</a></b></code>, and
	<code><b><a href=
	"#labeldisabledforeground">-labeldisabledforeground</a></b></code>
	options are only defined at widget level; there are no column
	configuration options with these names.&nbsp; The
	<code><b>-labelheight</b></code> option is only supported by the
	Tablelist package, but not by Tablelist_tile.</dd>

	<dt><br>
	<a name="col_labelimage"></a><code><b>-labelimage</b>
	<i>image</i></code></dt>

	<dd>Specifies the name of the Tk image to be displayed in the header
	label.&nbsp; <code><i>image</i></code> must be the result of an
	invocation of the&nbsp; <code><b>image create</b></code>&nbsp; command,
	or an empty string, specifying that no image is to be displayed.&nbsp;
	If the label's text is right-aligned then the image will be displayed
	to the right of the text, otherwise to its left.&nbsp; The text and the
	image are separated from each other by a gap corresponding to the width
	of a space character in the given label's font.</dd>

	<dt><br>
	<a name="col_maxwidth"></a><code><b>-maxwidth</b>
	<i>width</i></code></dt>

	<dd><code><i>width</i></code> must be a number.&nbsp; A positive value
	specifies the column's maximum width in average-size characters of the
	widget's font.&nbsp; If <code><i>width</i></code> is negative, its
	absolute value is interpreted as a maximum column width in
	pixels.&nbsp; Finally, a value of zero (which is the default) specifies
	that the column's maximum width is to be made just large enough to hold
	all the elements in the column, including its header.&nbsp; This option
	is only relevant if the given column has dynamic width, i.e., if its
	width was set to <code>0</code>.</dd>

	<dt><br>
	<a name="col_name"></a><code><b>-name</b> <i>name</i></code></dt>

	<dd>Specifies a name associated with the column.&nbsp; While the
	numerical index of a column might change by inserting, deleting, or
	moving columns, its name remains constant and can be used as a safe
	alternative column index (see the <a href="#col_indices">COLUMN
	INDICES</a> section for details).&nbsp; Similarly, it can also be used
	as the second component of a cell index of the form
	<code><i>row</i><b>,</b><i>col</i></code>, as described in the <a href=
	"#cell_indices">CELL INDICES</a> section.&nbsp; To avoid ambiguities,
	column names should be different from any other forms of column indices
	(like numbers, <code><b>active</b></code>, <code><b>anchor</b></code>,
	<code><b>end</b></code>, or any of their abbreviations).&nbsp; They
	should also be different from (any abbreviations of) the string
	<code><b>all</b></code>, which may be specified as the value of the
	<code><b><a href="#stretch">-stretch</a></b></code> configuration
	option.&nbsp; The default value is an empty string.</dd>

	<dt><br>
	<a name="col_resizable"></a><code><b>-resizable</b>
	<i>boolean</i></code></dt>

	<dd>Specifies whether the column can be resized interactively.&nbsp;
	See the <a href="#label_bindings">DEFAULT BINDINGS FOR THE HEADER
	LABELS</a> section for information on interactive column
	resizing.&nbsp; The default value is <code>1</code>.&nbsp; This option
	is only relevant if the value of the <code><b><a href=
	"#resizablecolumns">-resizablecolumns</a></b></code> widget
	configuration option is true.</dd>

	<dt><br>
	<a name="col_selectbackground"></a><code><b>-selectbackground</b>
	<i>color</i></code></dt>

	<dd>Specifies the background color to use when displaying the contents
	of a cell in the given column while the cell is selected.</dd>

	<dt><br>
	<a name="col_selectforeground"></a><code><b>-selectforeground</b>
	<i>color</i></code></dt>

	<dd>Specifies the foreground color to use when displaying the contents
	of a cell in the given column while the cell is selected.</dd>

	<dt><br>
	<a name="col_showarrow"></a><code><b>-showarrow</b>
	<i>boolean</i></code></dt>

	<dd>Specifies whether the <code><b><a href=
	"#sortbycolumn">sortbycolumn</a></b></code> command with the given
	column index as first argument and the <code><b><a href=
	"#sortbycolumnlist">sortbycolumnlist</a></b></code> command having the
	given column index as element of its first argument should place an
	arrow indicating the sort order into the column's label.&nbsp; The
	default value is <code>1</code>.&nbsp; This option is only relevant if
	the value of the <code><b><a href=
	"#showarrow">-showarrow</a></b></code> widget configuration option is
	true.</dd>

	<dt><br>
	<a name="col_showlinenumbers"></a><code><b>-showlinenumbers</b>
	<i>boolean</i></code></dt>

	<dd>
	  Specifies whether the given column should display the line numbers
	  (starting with 1 and ending with the number of the non-hidden
	  rows).&nbsp; The default value is <code>0</code>.

	  <p>The following details assume that the given column's
	  <code><b>-showlinenumbers</b></code> option was set to true:&nbsp;
	  Associating the line numbers with the non-hidden rows takes place
	  automatically whenever items are inserted, deleted, updated, moved,
	  or sorted.&nbsp; For increased efficiency, this is in most cases done
	  at idle time.&nbsp; For example, if several items are inserted into
	  or deleted from the tablelist widget, then the necessary renumbering
	  of the non-hidden rows will be performed as an idle callback, the
	  next time the event loop is entered and there are no events to
	  process.&nbsp; The line numbers will override any previous contents
	  of the column's cells.&nbsp; They are, per default, displayed without
	  leading zeros, but this (and the display format in general) can be
	  changed with the aid of the <code><b><a href=
	  "#col_formatcommand">-formatcommand</a></b></code> column
	  configuration option.</p>

	  <p>The <code><b><a href="#sortbycolumn">sortbycolumn</a></b></code>
	  and <code><b><a href=
	  "#sortbycolumnlist">sortbycolumnlist</a></b></code> subcommands as
	  well as the <code><b><a href=
	  "tablelistColSort.html#sortByColumn">tablelist::sortByColumn</a></b></code>
	  and <code><b><a href=
	  "tablelistColSort.html#addToSortColumns">tablelist::addToSortColumns</a></b></code>
	  commands check the column indices passed to them as arguments and
	  don't perform any sorting by those columns that have been configured
	  to display the line numbers (see the corresponding descriptions for
	  details).</p>
	</dd>

	<dt><a name="col_sortcommand"></a><code><b>-sortcommand</b>
	<i>command</i></code></dt>

	<dd>This option is only relevant if the value of the <code><b><a href=
	"#col_sortmode">-sortmode</a></b></code> option for the given column is
	<code><b>command</b></code>.&nbsp; It specifies a command to be used
	for the comparison of the column's elements when invoking the
	<code><b><a href="#sortbycolumn">sortbycolumn</a></b></code> command
	with the given column index as first argument or the <code><b><a href=
	"#sortbycolumnlist">sortbycolumnlist</a></b></code> command having the
	given column index as element of its first argument.&nbsp; To compare
	two elements during the <code><b>sortbycolumn</b></code> or
	<code><b>sortbycolumnlist</b></code> operation,
	<code><i>command</i></code> is automatically concatenated with the two
	elements and the resulting script is evaluated.&nbsp; The script should
	return an integer less than, equal to, or greater than zero if the
	first element is to be considered less than, equal to, or greater than
	the second, respectively.</dd>

	<dt><br>
	<a name="col_sortmode"></a><code><b>-sortmode</b>
	<i>mode</i></code></dt>

	<dd>
	  Specifies how to compare the column's elements when invoking the
	  <code><b><a href="#sortbycolumn">sortbycolumn</a></b></code> command
	  with the given column index as first argument or the
	  <code><b><a href="#sortbycolumnlist">sortbycolumnlist</a></b></code>
	  command having the given column index as element of its first
	  argument.&nbsp; <code><i>mode</i></code> may have any of the
	  following values:<br>
	  &nbsp;

	  <table border="0" cellpadding="0" cellspacing="0">
	    <tr valign="top">
	      <td width="90"><code><b>ascii</b></code></td>

	      <td>Use string comparison with ASCII collation order.&nbsp; This
	      is the default.<br>
	      &nbsp;</td>
	    </tr>

	    <tr valign="top">
	      <td><code><b>command</b></code></td>

	      <td>Use the command specified by the <code><b><a href=
	      "#col_sortcommand">-sortcommand</a></b></code> column
	      configuration option to compare the column's elements.<br>
	      &nbsp;</td>
	    </tr>

	    <tr valign="top">
	      <td><code><b>dictionary</b></code></td>

	      <td>Use dictionary-style comparison.&nbsp; This is the same as
	      <code><b>ascii</b></code>, except: (a) case is ignored except as
	      a tie-breaker; (b) if two strings contain embedded numbers, the
	      numbers compare as integers, not characters.&nbsp; For example,
	      <code>bigBoy</code> sorts between <code>bigbang</code> and
	      <code>bigboy</code>, and <code>x10y</code> sorts between
	      <code>x9y</code> and <code>x11y</code>.<br>
	      &nbsp;</td>
	    </tr>

	    <tr valign="top">
	      <td><code><b>integer</b></code></td>

	      <td>Convert the elements to integers and use integer
	      comparison.<br>
	      &nbsp;</td>
	    </tr>

	    <tr valign="top">
	      <td><code><b>real</b></code></td>

	      <td>Convert the elements to floating-point values and use
	      floating-point comparison.</td>
	    </tr>
	  </table>
	</dd>

	<dt><br>
	<a name="col_stretchable"></a><code><b>-stretchable</b>
	<i>boolean</i></code></dt>

	<dd>Specifies whether the column is to be stretched in order to fill
	the tablelist window if necessary.&nbsp; The value of this option is
	tied to that of the <code><b><a href="#stretch">-stretch</a></b></code>
	option for the tablelist widget; changes in either will automatically
	be reflected in the other.</dd>

	<dt><br>
	<a name="col_text"></a><code><b>-text</b> <i>list</i></code></dt>

	<dd>Specifies a list of strings to be displayed in the cells of the
	given column, i.e., updates the elements contained in the column.&nbsp;
	If the tablelist's <code><b><a href="#state">state</a></b></code> is
	<code><b>disabled</b></code> then this option will be ignored.</dd>

	<dt><br>
	<a name="col_title"></a><code><b>-title</b> <i>title</i></code></dt>

	<dd>Specifies the text to be displayed in the column's header.&nbsp;
	This option is tied to the <code><i>title</i></code> element
	corresponding to the given column in the list specifying the value of
	the <code><b><a href="#columns">-columns</a></b></code> option for the
	tablelist widget; changes in either will automatically be reflected in
	the other.</dd>

	<dt><br>
	<a name="col_width"></a><code><b>-width</b> <i>width</i></code></dt>

	<dd><code><i>width</i></code> must be a number.&nbsp; A positive value
	specifies the column's width in average-size characters of the widget's
	font.&nbsp; If <code><i>width</i></code> is negative, its absolute
	value is interpreted as a column width in pixels.&nbsp; Finally, a
	value of zero specifies that the column's width is to be made just
	large enough to hold all the elements in the column, including its
	header (but no larger than the maximum width indicated by the
	<code><b><a href="#col_maxwidth">-maxwidth</a></b></code> column
	configuration option).&nbsp; This option is tied to the
	<code><i>width</i></code> element corresponding to the given column in
	the list specifying the value of the <code><b><a href=
	"#columns">-columns</a></b></code> option for the tablelist widget;
	changes in either will automatically be reflected in the other.</dd>

	<dt><br>
	The <code><b>-background</b></code>, <code><b>-font</b></code>,
	<code><b>-foreground</b></code>, <code><b>-selectbackground</b></code>,
	and <code><b>-selectforeground</b></code> column configuration options
	override the options with the same names set at widget level (but not
	the ones set at cell or row level) if the specified value is not an
	empty string.&nbsp; See the <a href="#colors_and_fonts">COLORS AND
	FONTS</a> section for further details on these options.</dt>
      </dl>
    </dd>

    <dt><br>
    <a name="row_options"></a><b>ROW CONFIGURATION OPTIONS</b></dt>

    <dd>The following options are currently supported by the <code><b><a href=
    "#rowcget">rowcget</a></b></code>, <code><b><a href=
    "#rowconfigure">rowconfigure</a></b></code>, <code><b><a href=
    "#configrowlist">configrowlist</a></b></code>, and <code><b><a href=
    "#configrows">configrows</a></b></code> commands:</dd>

    <dd>
      <dl>
	<dt><br>
	<a name="row_background"></a><code><b>-background</b>
	<i>color</i></code> or <code><b>-bg</b> <i>color</i></code></dt>

	<dd>Specifies the normal background color to use when displaying the
	contents of the row.</dd>

	<dt><br>
	<a name="row_font"></a><code><b>-font</b> <i>font</i></code></dt>

	<dd>Specifies the font to use when displaying the contents of the
	row.</dd>

	<dt><br>
	<a name="row_foreground"></a><code><b>-foreground</b>
	<i>color</i></code> or <code><b>-fg</b> <i>color</i></code></dt>

	<dd>Specifies the normal foreground color to use when displaying the
	contents of the row.</dd>

	<dt><br>
	<a name="row_hide"></a><code><b>-hide</b> <i>boolean</i></code></dt>

	<dd>
	  Specifies whether to hide the row when displaying the widget or
	  exporting its selection.&nbsp; The default value is
	  <code>0</code>.&nbsp; For technical reasons (the use of the
	  <code><b>-elide</b></code> option for a text widget tag), this option
	  is not supported for Tk versions earlier than 8.3.

	  <p><b>CAUTION:</b>&nbsp; Tk versions 8.3 - 8.4.12 had a bug that
	  caused a segmentation fault if the whole content of a text widget was
	  elided.&nbsp; This bug was also present in Tk 8.5.a1 - 8.5.a3.&nbsp;
	  When using one of these earlier Tk versions, this bug will produce a
	  crash if all the rows of a tablelist widget are hidden.&nbsp; It is
	  your responsibility to avoid such situations when using a Tk version
	  having this bug!</p>
	</dd>

	<dt><a name="row_name"></a><code><b>-name</b> <i>name</i></code></dt>

	<dd>Specifies a name associated with the row.&nbsp; While the numerical
	index of a row might change by inserting, deleting, or moving rows, or
	by sorting the items, its name remains constant and can be used as a
	safe alternative row index (see the <a href="#row_indices">ROW
	INDICES</a> section for details).&nbsp; Similarly, it can also be used
	as the first component of a cell index of the form
	<code><i>row</i><b>,</b><i>col</i></code>, as described in the <a href=
	"#cell_indices">CELL INDICES</a> section.&nbsp; To avoid ambiguities,
	row names should be different from any other forms of row indices (like
	numbers, keys, <code><b>active</b></code>, <code><b>anchor</b></code>,
	<code><b>end</b></code>, or any of their abbreviations).&nbsp; The
	default value is an empty string.</dd>

	<dt><br>
	<a name="row_selectable"></a><code><b>-selectable</b>
	<i>boolean</i></code></dt>

	<dd>Specifies whether the elements displayed in the given row can be
	selected.&nbsp; The default value is <code>1</code>.&nbsp; If the value
	<code>0</code> was given then any attempt to select the item contained
	in this row with the aid of the&nbsp; <code><b><a href=
	"#selection">selection set</a></b></code>&nbsp; widget command or any
	of its elements by using the&nbsp; <code><b><a href=
	"#cellselection">cellselection set</a></b></code>&nbsp; command will be
	silently ignored; moreover, an existing old (cell) selection is removed
	from the row.</dd>

	<dt><br>
	<a name="row_selectbackground"></a><code><b>-selectbackground</b>
	<i>color</i></code></dt>

	<dd>Specifies the background color to use when displaying the contents
	of a cell in the given row while the cell is selected.</dd>

	<dt><br>
	<a name="row_selectforeground"></a><code><b>-selectforeground</b>
	<i>color</i></code></dt>

	<dd>Specifies the foreground color to use when displaying the contents
	of a cell in the given row while the cell is selected.</dd>

	<dt><br>
	<a name="row_text"></a><code><b>-text</b> <i>list</i></code></dt>

	<dd>Specifies a list of strings to be displayed in the cells of the
	given row, i.e., updates the item contained in the row.&nbsp; If the
	tablelist's <code><b><a href="#state">state</a></b></code> is
	<code><b>disabled</b></code> then this option will be ignored.</dd>

	<dt><br>
	The <code><b>-background</b></code>, <code><b>-font</b></code>,
	<code><b>-foreground</b></code>, <code><b>-selectbackground</b></code>,
	and <code><b>-selectforeground</b></code> row configuration options
	override the options with the same names set at column or widget level
	(but not the ones set at cell level) if the specified value is not an
	empty string.&nbsp; See the <a href="#colors_and_fonts">COLORS AND
	FONTS</a> section for further details on these options.</dt>
      </dl>
    </dd>

    <dt><br>
    <a name="cell_options"></a><b>CELL CONFIGURATION OPTIONS</b></dt>

    <dd>The following options are currently supported by the <code><b><a href=
    "#cellcget">cellcget</a></b></code>, <code><b><a href=
    "#cellconfigure">cellconfigure</a></b></code>, <code><b><a href=
    "#configcelllist">configcelllist</a></b></code>, and <code><b><a href=
    "#configcells">configcells</a></b></code> commands:</dd>

    <dd>
      <dl>
	<dt><br>
	<a name="cell_background"></a><code><b>-background</b>
	<i>color</i></code> or <code><b>-bg</b> <i>color</i></code></dt>

	<dd>Specifies the normal background color to use when displaying the
	contents of the cell.</dd>

	<dt><br>
	<a name="cell_editable"></a><code><b>-editable</b>
	<i>boolean</i></code></dt>

	<dd>Specifies whether the contents of the cell can be edited
	interactively.&nbsp; The default value is <code>0</code>.&nbsp; This
	option overrides the one with the same name for the column containing
	the given cell.</dd>

	<dt><br>
	<a name="cell_editwindow"></a><code><b>-editwindow</b>
	<i>name</i></code></dt>

	<dd>Specifies the type of the temporary embedded widget to be used for
	interactive editing of the cell's contents.&nbsp; The default value is
	<code><b>entry</b></code>.&nbsp; This option overrides the one with the
	same name for the column containing the given cell, and may have the
	same values as its <a href="#col_editwindow">column-related
	counterpart</a>.</dd>

	<dt><br>
	<a name="cell_font"></a><code><b>-font</b> <i>font</i></code></dt>

	<dd>Specifies the font to use when displaying the contents of the
	cell.</dd>

	<dt><br>
	<a name="cell_foreground"></a><code><b>-foreground</b>
	<i>color</i></code> or <code><b>-fg</b> <i>color</i></code></dt>

	<dd>Specifies the normal foreground color to use when displaying the
	contents of the cell.</dd>

	<dt><br>
	<a name="cell_image"></a><code><b>-image</b> <i>image</i></code></dt>

	<dd>
	  Specifies the name of the Tk image to be displayed in the cell.&nbsp;
	  <code><i>image</i></code> must be the result of an invocation of
	  the&nbsp; <code><b>image create</b></code>&nbsp; command, or an empty
	  string, specifying that no image is to be displayed.&nbsp; If the
	  column containing the cell is right-aligned then the image will be
	  displayed to the right of the cell's text, otherwise to its
	  left.&nbsp; The text and the image are separated from each other by a
	  space character.&nbsp; If for the same cell the <code><b><a href=
	  "#cell_window">-window</a></b></code> option was specified with a
	  nonempty value then it overrides the <code><b>-image</b></code>
	  option.&nbsp; If the tablelist's <code><b><a href=
	  "#state">state</a></b></code> is <code><b>disabled</b></code> then
	  this option will be ignored.

	  <p>To display an image in a cell, Tablelist makes use of an embedded
	  label widget (which is created on demand).&nbsp; This requires more
	  memory than inserting the image directly into the tablelist's body,
	  but has the main advantage of making it possible to adjust the width
	  of the label containing the widget to fit into its column.&nbsp; This
	  has the visual effect of cutting off part of the image from its right
	  side.&nbsp; To make sure that images with transparent background will
	  be displayed correctly, the background color of the label widgets
	  containing the embedded images is automatically updated whenever
	  necessary.</p>
	</dd>

	<dt><a name="cell_selectbackground"></a><code><b>-selectbackground</b>
	<i>color</i></code></dt>

	<dd>Specifies the background color to use when displaying the contents
	of the cell while it is selected.</dd>

	<dt><br>
	<a name="cell_selectforeground"></a><code><b>-selectforeground</b>
	<i>color</i></code></dt>

	<dd>Specifies the foreground color to use when displaying the contents
	of the cell while it is selected.</dd>

	<dt><br>
	<a name="cell_text"></a><code><b>-text</b> <i>text</i></code></dt>

	<dd>Specifies the string to be displayed in the given cell, i.e.,
	updates the element contained in the cell.&nbsp; If the tablelist's
	<code><b><a href="#state">state</a></b></code> is
	<code><b>disabled</b></code> then this option will be ignored.</dd>

	<dt><br>
	<a name="cell_window"></a><code><b>-window</b>
	<i>command</i></code></dt>

	<dd>
	  Specifies a Tcl command creating the window to be embedded into the
	  cell.&nbsp; The command is automatically concatenated with the name
	  of the tablelist widget, the cell's row and column indices, as well
	  as the path name of the embedded window to be created, and the
	  resulting script is evaluated in the global scope.&nbsp;
	  <code><i>command</i></code> may also be an empty string, specifying
	  that no embedded window is to be displayed.&nbsp; If the column
	  containing the cell is right-aligned then the window will be
	  displayed to the right of the cell's text, otherwise to its
	  left.&nbsp; The text and the window are separated from each other by
	  a space character.&nbsp; If this option was specified with a nonempty
	  value then it overrides the <code><b><a href=
	  "#cell_image">-image</a></b></code> cell configuration option.&nbsp;
	  If the tablelist's <code><b><a href="#state">state</a></b></code> is
	  <code><b>disabled</b></code> then this option will be ignored.

	  <p>There are several situations where the embedded window will be
	  destroyed and later recreated by invoking the script mentioned
	  above.&nbsp; For example, when changing the value of some of the
	  tablelist widget or column configuration options, sorting the items,
	  or moving a row or a column, the widget's contents will be
	  redisplayed, which makes it necessary to recreate the embedded
	  windows.&nbsp; This operation won't preserve the changes made on the
	  embedded windows after their creation.&nbsp; For this reason, you
	  should avoid any changes on embedded windows outside their creation
	  scripts.</p>
	</dd>

	<dt><a name="cell_windowdestroy"></a><code><b>-windowdestroy</b>
	<i>command</i></code></dt>

	<dd>Specifies a Tcl command to be invoked when a window embedded into
	the cell is destroyed.&nbsp; The command is automatically concatenated
	with the name of the tablelist widget, the cell's row and column
	indices, as well as the path name of the embedded window, and the
	resulting script is evaluated in the global scope.&nbsp; This option
	provides an easy-to-use alternative to binding a script to the embedded
	window's <code><b>&lt;Destroy&gt;</b></code> event from within its
	creation script, specified as the value of the <code><b><a href=
	"#cell_window">-window</a></b></code> cell configuration option.</dd>

	<dt><br>
	The <code><b>-background</b></code>, <code><b>-font</b></code>,
	<code><b>-foreground</b></code>, <code><b>-selectbackground</b></code>,
	and <code><b>-selectforeground</b></code> cell configuration options
	override the options with the same names set at row, column, or widget
	level if the specified value is not an empty string.&nbsp; See the
	<a href="#colors_and_fonts">COLORS AND FONTS</a> section for further
	details on these options.</dt>
      </dl>
    </dd>

    <dt><br>
    <a name="cell_editing"></a><b>INTERACTIVE CELL EDITING</b></dt>

    <dd>Whether or not the contents of a cell of a tablelist widget can be
    edited interactively, depends on the <code><b>-editable</b></code> option
    on both <a href="#cell_editable">cell</a> and <a href=
    "#col_editable">column</a> level.&nbsp; If the cell-level option was set
    explicitly then its value determines the editability of the cell's
    contents.&nbsp; Otherwise the value of the column-level option is used to
    decide whether the cell can be edited interactively.&nbsp; From this rule
    it follows that you can enable interactive cell editing for a whole column
    by setting its <code><b>-editable</b></code> option to true.&nbsp; To
    exclude some of the column's cells from interactive editing, set their
    <code><b>-editable</b></code> option to false.</dd>

    <dd><br>
    The interactive cell editing is started by the <code><b><a href=
    "#editcell">editcell</a></b></code> subcommand, which is invoked implicitly
    by clicking with the left mouse button into an editable cell or using
    keyboard navigation to move from one editable cell into another.&nbsp; If
    the selection type is <code><b>cell</b></code> and the location cursor is
    in an editable cell, then the interactive editing of the active element can
    also be started by pressing <code>Return</code> or
    <code>KP_Enter</code>.&nbsp; Per default, the <code><b>editcell</b></code>
    subcommand creates a temporary entry widget and embeds it into the cell
    whose index was passed to it as argument.&nbsp; You can, however, use the
    <code><b>-editwindow</b></code> <a href="#col_editwindow">column</a> or
    <a href="#cell_editwindow">cell</a> configuration option to specify another
    widget instead of an entry, like a Tk core text, spinbox, or checkbutton
    widget, or a tile entry, combobox, or checkbutton, or one of the 16
    currently supported widgets from the packages <a href=
    "tablelistBWidget.html">BWidget</a>, <a href=
    "tablelistIwidgets.html">Iwidgets</a>, <a href=
    "tablelistCombobox.html">combobox</a> (by Bryan Oakley), and <a href=
    "tablelistMentry.html">Mentry (or Mentry_tile)</a>.&nbsp; Before specifying
    a widget from one of these library packages as the value of the
    <code><b>-editwindow</b></code> column or cell configuration option, you
    must register it for interactive cell editing by invoking the corresponding
    <code><b>tablelist::add*</b></code> command.&nbsp; The Tk core entry, text,
    spinbox, and checkbutton widgets, as well as the tile entry, combobox, and
    checkbutton widgets are automatically registered for cell editing.</dd>

    <dd><br>
    In the simplest case, the text automatically inserted into the temporary
    embedded widget is the same as the text displayed in the cell, which in
    turn can be the cell's contents or the string obtained from the latter by
    using the <code><b><a href=
    "#col_formatcommand">-formatcommand</a></b></code> option of the cell's
    column.&nbsp; However, if the value of the <code><b><a href=
    "#editstartcommand">-editstartcommand</a></b></code> configuration option
    is a nonempty string, then the text displayed in the cell is passed to that
    command as its last argument (following the tablelist's path name as well
    as the cell's row and column indices), the resulting script is evaluated in
    the global scope, and the return value becomes the edit window's
    contents.&nbsp; From within this script you can invoke the
    <code><b><a href="#cancelediting">cancelediting</a></b></code> subcommand,
    which destroys the temporary embedded widget and cancels the editing of its
    contents.&nbsp; The main goal of this script is, however, to enable you to
    define validations for the editing process.&nbsp; This can be done either
    with the aid of the options for entry validation, supported by Tk versions
    8.3 and higher (see the <b>entry</b> reference page), or by using the
    widget callback package <a href="http://www.nemethi.de">Wcb</a>, available
    for Tk versions 8.0 and higher.&nbsp; The Iwidgets package (available for
    Tk versions 8.0 or higher) provides its own validation facilities, which
    can equally be used if the edit window is a widget belonging to that
    extension.&nbsp; In either case, you will need the path name of the
    temporary embedded widget or that of its entry or entry-like component; use
    the <code><b><a href="#editwinpath">editwinpath</a></b></code> and
    <code><b><a href="#entrypath">entrypath</a></b></code> subcommands to get
    these path names.&nbsp; Another purpose of the command indicated by the
    <code><b>-editstartcommand</b></code> option is to enable you to prepare
    the edit window in various other ways.&nbsp; For example, if the latter is
    a combobox widget then you can set its <code><b>-editable</b></code> option
    to false or (for a tile combobox) set its state to
    <code><b>readonly</b></code>, and you will have to populate its listbox
    component.&nbsp; In the same script, you can change some of the embedded
    widget's visual attributes (like its background, selection background, or
    selection foreground color).&nbsp; (Notice that this can also be done with
    the aid of the Tk option database.)</dd>

    <dd><br>
    The editing of the text inserted into the edit window uses the
    widget-specific bindings for mouse and keyboard events, with a few
    extensions and changes, as described in the <a href=
    "#edit_bindings">DEFAULT BINDINGS FOR INTERACTIVE CELL EDITING</a>
    section.&nbsp; For example, in entry or entry-like components of the edit
    window, <code>Control-i</code> inserts a tab, <code>Control-j</code>
    inserts a newline, and if the edit window is a text widget then
    <code>Return</code> and <code>KP_Enter</code> insert a newline character,
    too.&nbsp; <code>Tab</code> and <code>Shift-Tab</code> are used for
    navigation between the editable cells, just like <code>Alt-Left</code>,
    <code>Alt-Right</code>, <code>Alt-Up</code>, <code>Alt-Down</code>,
    <code>Alt-Prior</code>, <code>Alt-Next</code>, <code>Alt-Home</code>, and
    <code>Alt-End</code> (as well as <code>Control-Home</code> and
    <code>Control-End</code>, except in the case of a text widget).&nbsp; On
    Mac OS Classic and Mac OS X Aqua the <code>Command</code> key is used
    instead of <code>Alt</code>.&nbsp; The editing can be aborted with the
    <code>Escape</code> key (or by invoking the <code><b><a href=
    "#cancelediting">cancelediting</a></b></code> subcommand) and terminated
    normally with <code>Return</code> or <code>KP_Enter</code> (together with
    <code>Control</code> for a text widget).&nbsp; The bindings for the keys
    used for normal termination of the editing just invoke the
    <code><b><a href="#finishediting">finishediting</a></b></code> subcommand;
    the latter can also be called explicitly to terminate the editing
    programmatically.&nbsp; Normal termination is also triggered by clicking
    with the left mouse button anywhere in the tablelist's body, outside the
    cell just being edited, or moving into another editable cell by using
    keyboard navigation.</dd>

    <dd><br>
    When normal termination of the editing process occurs, the Tcl command
    associated with the tablelist widget compares the edit window's final
    contents to its original one.&nbsp; If they are equal then the embedded
    widget is destroyed and the cell's original value is restored.&nbsp; If the
    two strings are different and the value of the <code><b><a href=
    "#editendcommand">-editendcommand</a></b></code> configuration option is a
    nonempty string, then the edit window's final text is passed to that
    command as its last argument (following the tablelist's path name as well
    as the cell's row and column indices), the resulting script is evaluated in
    the global scope, and the return value becomes the cell's new internal
    contents after destroying the temporary embedded widget.&nbsp; The main
    goal of this script is to enable you to do a final validation of the edit
    window's contents.&nbsp; From within this script you can invoke the
    <code><b><a href="#rejectinput">rejectinput</a></b></code> subcommand,
    which prevents the script's return value from becoming the cell's new
    contents; this subcommand also prevents the destruction of the temporary
    embedded widget.&nbsp; Another purpose of the command indicated by the
    <code><b>-editendcommand</b></code> option is to convert the edit window's
    text to the cell's new <i>internal</i> contents, which is necessary if, due
    to the <code><b><a href="#col_formatcommand">-formatcommand</a></b></code>
    column configuration option, the cell's internal value is different from
    its external representation.&nbsp; See the description of the
    <code><b><a href="#forceeditendcommand">-forceeditendcommand</a></b></code>
    option for more about the invocation of the command mentioned above.</dd>

    <dt><br>
    <a name="row_indices"></a><b>ROW INDICES</b></dt>

    <dd>
      Many of the widget commands for tablelist widgets take one or more row
      indices as arguments.&nbsp; A row index specifies a particular item of
      the tablelist, in any of the following ways:<br>
      &nbsp;

      <table border="0" cellpadding="0" cellspacing="0">
	<tr valign="top">
	  <td width="75"><code><i>number</i></code></td>

	  <td>Specifies the item as a numerical index, where <code>0</code>
	  corresponds to the first item in the tablelist.<br>
	  &nbsp;</td>
	</tr>

	<tr valign="top">
	  <td><code><b>k</b><i>number</i></code></td>

	  <td>Specifies the item by its full key, composed of the letter
	  <code><b>k</b></code> and the sequence number associated with the
	  item, as returned by the <code><b><a href=
	  "#getkeys">getkeys</a></b></code> widget command.<br>
	  &nbsp;</td>
	</tr>

	<tr valign="top">
	  <td><code><b>active</b></code></td>

	  <td>Indicates the item containing the element that has the location
	  cursor.&nbsp; Depending on the selection type, this item as a whole
	  or just its element having the location cursor will be displayed
	  according to the value of the <code><b><a href=
	  "#activestyle">-activestyle</a></b></code> configuration option when
	  the tablelist has the keyboard focus.&nbsp; This item is specified
	  with the <code><b><a href="#activate">activate</a></b></code> widget
	  command or as the row containing the element specified with the
	  <code><b><a href="#activatecell">activatecell</a></b></code> widget
	  command.<br>
	  &nbsp;</td>
	</tr>

	<tr valign="top">
	  <td><code><b>anchor</b></code></td>

	  <td>Indicates the anchor point for the row selection, which is set
	  with the&nbsp; <code><b><a href="#selection">selection
	  anchor</a></b></code>&nbsp; widget command, or the row containing the
	  anchor point for the cell selection, which is set with the&nbsp;
	  <code><b><a href="#cellselection">cellselection
	  anchor</a></b></code>&nbsp; widget command.<br>
	  &nbsp;</td>
	</tr>

	<tr valign="top">
	  <td><code><b>end</b></code></td>

	  <td>Indicates the end of the tablelist.&nbsp; For most commands this
	  refers to the last item in the tablelist, but for a few commands such
	  as <code><b><a href="#index">index</a></b></code>, <code><b><a href=
	  "#insert">insert</a></b></code>, and <code><b><a href=
	  "#insertlist">insertlist</a></b></code>, as well as for the target of
	  the <code><b><a href="#move">move</a></b></code> command it refers to
	  the item just after the last one.<br>
	  &nbsp;</td>
	</tr>

	<tr valign="top">
	  <td><code><b>@</b><i>x</i><b>,</b><i>y</i></code></td>

	  <td>Indicates the item that covers the point in the tablelist window
	  specified by <code><i>x</i></code> and <code><i>y</i></code> (in
	  pixel coordinates).&nbsp; If no item covers that point, then the
	  closest item to that point is used.&nbsp; The coordinates
	  <code><i>x</i></code> and <code><i>y</i></code> are expected to be
	  relative to the tablelist window itself (not its body component).<br>
	  &nbsp;</td>
	</tr>

	<tr valign="top">
	  <td><code><i>name</i></code></td>

	  <td>Specifies the row by the value of its <code><b><a href=
	  "#row_name">-name</a></b></code> configuration option.&nbsp;
	  <code><i>name</i></code> must be different from all the above row
	  indices, and should be unique (if several rows have the same name
	  then this value is considered to indicate the first matching
	  row).</td>
	</tr>
      </table>

      <p>In the widget command descriptions below, arguments named
      <code><i>index</i></code>, <code><i>first</i></code>,
      <code><i>last</i></code>, <code><i>source</i></code>, and
      <code><i>target</i></code> always contain row indices in one of the above
      forms.</p>
    </dd>

    <dt><a name="col_indices"></a><b>COLUMN INDICES</b></dt>

    <dd>
      Many of the widget commands for tablelist widgets take a column index as
      argument.&nbsp; A column index specifies a particular column of the
      tablelist, in any of the following ways:<br>
      &nbsp;

      <table border="0" cellpadding="0" cellspacing="0">
	<tr valign="top">
	  <td width="75"><code><i>number</i></code></td>

	  <td>Specifies the column as a numerical index, where <code>0</code>
	  corresponds to the first column in the tablelist.<br>
	  &nbsp;</td>
	</tr>

	<tr valign="top">
	  <td><code><b>active</b></code></td>

	  <td>Indicates the column containing the element that has the location
	  cursor.&nbsp; If the selection type is <code><b>cell</b></code> then
	  this element will be displayed according to the value of the
	  <code><b><a href="#activestyle">-activestyle</a></b></code>
	  configuration option when the tablelist has the keyboard focus.&nbsp;
	  This element is specified with the <code><b><a href=
	  "#activatecell">activatecell</a></b></code> widget command.<br>
	  &nbsp;</td>
	</tr>

	<tr valign="top">
	  <td><code><b>anchor</b></code></td>

	  <td>Indicates the column containing the anchor point for the cell
	  selection, which is set with the&nbsp; <code><b><a href=
	  "#cellselection">cellselection anchor</a></b></code>&nbsp; widget
	  command.<br>
	  &nbsp;</td>
	</tr>

	<tr valign="top">
	  <td><code><b>end</b></code></td>

	  <td>Indicates the last column of the tablelist, except for the
	  commands <code><b><a href=
	  "#insertcolumns">insertcolumns</a></b></code> and <code><b><a href=
	  "#insertcolumnlist">insertcolumnlist</a></b></code>, as well as for
	  the target of the <code><b><a href=
	  "#movecolumn">movecolumn</a></b></code> command, in which cases it
	  refers to the column just after the last one.<br>
	  &nbsp;</td>
	</tr>

	<tr valign="top">
	  <td><code><b>@</b><i>x</i><b>,</b><i>y</i></code></td>

	  <td>Indicates the column that covers the point in the tablelist
	  window specified by <code><i>x</i></code> and <code><i>y</i></code>
	  (in pixel coordinates).&nbsp; If no column covers that point, then
	  the closest column to that point is used.&nbsp; The coordinates
	  <code><i>x</i></code> and <code><i>y</i></code> are expected to be
	  relative to the tablelist window itself (not its body component).<br>
	  &nbsp;</td>
	</tr>

	<tr valign="top">
	  <td><code><i>name</i></code></td>

	  <td>Specifies the column by the value of its <code><b><a href=
	  "#col_name">-name</a></b></code> configuration option.&nbsp;
	  <code><i>name</i></code> must be different from all the above column
	  indices, and should be unique (if several columns have the same name
	  then this value is considered to indicate the first matching
	  column).</td>
	</tr>
      </table>

      <p>In the widget command descriptions below, arguments named
      <code><i>columnIndex</i></code>, <code><i>firstColumn</i></code>,
      <code><i>lastColumn</i></code>, <code><i>sourceColumn</i></code>, and
      <code><i>targetColumn</i></code> always contain column indices in one of
      the above forms.</p>
    </dd>

    <dt><a name="cell_indices"></a><b>CELL INDICES</b></dt>

    <dd>
      Many of the widget commands for tablelist widgets take a cell index as
      argument.&nbsp; A cell index specifies a particular cell of the
      tablelist, in any of the following ways:<br>
      &nbsp;

      <table border="0" cellpadding="0" cellspacing="0">
	<tr valign="top">
	  <td width="75"><code><i>row</i><b>,</b><i>col</i></code></td>

	  <td>Indicates the cell having the row index <code><i>row</i></code>
	  and column index <code><i>col</i></code>.&nbsp;
	  <code><i>row</i></code> may be a number, a full key (of the form
	  <code><b>k</b><i>number</i></code>), <code><b>active</b></code>,
	  <code><b>anchor</b></code>, <code><b>end</b></code> (where the latter
	  indicates the last row in the tablelist), or a row name.&nbsp;
	  <code><i>col</i></code> may be a number, <code><b>active</b></code>,
	  <code><b>anchor</b></code>, <code><b>end</b></code>, or a column
	  name.<br>
	  &nbsp;</td>
	</tr>

	<tr valign="top">
	  <td><code><b>active</b></code></td>

	  <td>Indicates the element that has the location cursor.&nbsp; If the
	  selection type is <code><b>cell</b></code> then this element will be
	  displayed according to the value of the <code><b><a href=
	  "#activestyle">-activestyle</a></b></code> configuration option when
	  the tablelist has the keyboard focus.&nbsp; This element is specified
	  with the <code><b><a href="#activatecell">activatecell</a></b></code>
	  widget command.<br>
	  &nbsp;</td>
	</tr>

	<tr valign="top">
	  <td><code><b>anchor</b></code></td>

	  <td>Indicates the anchor point for the cell selection, which is set
	  with the&nbsp; <code><b><a href="#cellselection">cellselection
	  anchor</a></b></code>&nbsp; widget command.<br>
	  &nbsp;</td>
	</tr>

	<tr valign="top">
	  <td><code><b>end</b></code></td>

	  <td>Indicates the last cell in the last row of the tablelist.<br>
	  &nbsp;</td>
	</tr>

	<tr valign="top">
	  <td><code><b>@</b><i>x</i><b>,</b><i>y</i></code></td>

	  <td>Indicates the cell that covers the point in the tablelist window
	  specified by <code><i>x</i></code> and <code><i>y</i></code> (in
	  pixel coordinates).&nbsp; If no cell covers that point, then the
	  closest cell to that point is used.&nbsp; The coordinates
	  <code><i>x</i></code> and <code><i>y</i></code> are expected to be
	  relative to the tablelist window itself (not its body
	  component).</td>
	</tr>
      </table>

      <p>In the widget command descriptions below, arguments named
      <code><i>cellIndex</i></code>, <code><i>firstCell</i></code>, and
      <code><i>lastCell</i></code> always contain cell indices in one of the
      above forms.</p>
    </dd>

    <dt><a name="widget_command"></a><b>WIDGET COMMAND</b></dt>

    <dd>
      The <code><b>tablelist::tablelist</b></code> command creates a new Tcl
      command whose name is <code><i>pathName</i></code>.&nbsp; This command
      may be used to invoke various operations on the widget.&nbsp; It has the
      following general form:

      <blockquote>
	<pre>
<i>pathName</i> <i>option</i> ?<i>arg</i> <i>arg</i> ...?
</pre>
      </blockquote>
    </dd>

    <dd><code><i>option</i></code> and the <code><i>arg</i></code>s determine
    the exact behavior of the command.&nbsp; The following commands are
    possible for tablelist widgets:</dd>

    <dd>
      <dl>
	<dt><br>
	<a name="activate"></a><code><i>pathName</i> <b>activate</b>
	<i>index</i></code></dt>

	<dd>Sets the active item to the one indicated by
	<code><i>index</i></code> if the tablelist's <code><b><a href=
	"#state">state</a></b></code> is not
	<code><b>disabled</b></code>.&nbsp; If <code><i>index</i></code> is
	outside the range of items in the tablelist or it refers to a hidden
	item then the closest non-hidden item is activated.&nbsp; The active
	item is drawn as specified by the <code><b><a href=
	"#activestyle">-activestyle</a></b></code> configuration option when
	the widget has the input focus and the selection type is
	<code><b>row</b></code>.&nbsp; Its index may be retrieved with the
	index <code><b>active</b></code>.&nbsp; Returns an empty string.</dd>

	<dt><br>
	<a name="activatecell"></a><code><i>pathName</i> <b>activatecell</b>
	<i>cellIndex</i></code></dt>

	<dd>Sets the active element to the one indicated by
	<code><i>cellIndex</i></code> if the tablelist's <code><b><a href=
	"#state">state</a></b></code> is not
	<code><b>disabled</b></code>.&nbsp; If <code><i>cellIndex</i></code> is
	outside the range of elements in the tablelist or it refers to a hidden
	element, then the closest non-hidden element is activated.&nbsp; The
	active element is drawn as specified by the <code><b><a href=
	"#activestyle">-activestyle</a></b></code> configuration option when
	the widget has the input focus and the selection type is
	<code><b>cell</b></code>.&nbsp; Its index may be retrieved with the
	cell index <code><b>active</b></code>.&nbsp; Returns an empty
	string.</dd>

	<dt><br>
	<a name="attrib"></a><code><i>pathName</i> <b>attrib</b> ?<i>name</i>?
	?<i>value</i> <i>name</i> <i>value</i> ...?</code></dt>

	<dd>Queries or modifies the attributes of the widget.&nbsp; If no
	<code><i>name</i></code> is specified, the command returns a list of
	pairs, each of which contains the name and the value of an attribute
	for <code><i>pathName</i></code>.&nbsp; If <code><i>name</i></code> is
	specified with no <code><i>value</i></code>, then the command returns
	the value of the one named attribute.&nbsp; If one or more
	<code><i>name</i></code>-<code><i>value</i></code> pairs are specified,
	then the command sets the given widget attribute(s) to the given
	value(s); in this case the return value is an empty string.&nbsp;
	<code><i>name</i></code> may be an arbitrary string.</dd>

	<dt><br>
	<a name="bbox"></a><code><i>pathName</i> <b>bbox</b>
	<i>index</i></code></dt>

	<dd>Returns a list of four numbers describing the bounding box of the
	row given by <i>index</i>.&nbsp; The first two elements of the list
	give the x and y coordinates of the upper-left corner of the screen
	area covered by the row (specified in pixels relative to the widget)
	and the last two elements give the width and height of the area, in
	pixels.&nbsp; If no part of the row given by <i>index</i> is visible on
	the screen, or if <i>index</i> refers to a non-existent row, then the
	result is an empty string; if the row is partially visible, the result
	gives the full area of the row, including any parts that are not
	visible.</dd>

	<dt><br>
	<a name="bodypath"></a><code><i>pathName</i>
	<b>bodypath</b></code></dt>

	<dd>Returns the path name of the body component of the widget.</dd>

	<dt><br>
	<a name="bodytag"></a><code><i>pathName</i> <b>bodytag</b></code></dt>

	<dd>Returns the name of a binding tag whose name depends on the path
	name of the tablelist widget and which is associated with the
	tablelist's body, the separators, as well as the message and label
	widgets used for displaying multi-line elements and images,
	respectively.&nbsp; This binding tag is designed to be used when
	defining individual binding scripts for tablelist widgets.&nbsp; The
	main advantage of using this tag instead of the path name of the
	tablelist's body is that it enables you to write event handling scripts
	that are valid not only for the tablelist's body but also for the
	separators, multi-line cells, and embedded images.&nbsp; This binding
	tag precedes the tag <code><b><a href=
	"#body_bindings">TablelistBody</a></b></code> in the list of binding
	tags of the tablelist descendants mentioned above.</dd>

	<dt><br>
	<a name="cancelediting"></a><code><i>pathName</i>
	<b>cancelediting</b></code></dt>

	<dd>This subcommand cancels the interactive editing of the contents of
	the cell whose index was passed to the <code><b><a href=
	"#editcell">editcell</a></b></code> subcommand, destroys the temporary
	widget embedded into the cell, and restores the original cell
	contents.&nbsp; This command enables you to cancel the interactive cell
	editing from within the Tcl command specified by the <code><b><a href=
	"#editstartcommand">-editstartcommand</a></b></code> configuration
	option if that pre-edit callback encounters an error when preparing the
	text to be inserted into the edit window.&nbsp; The command is also
	invoked implicitly by pressing the <code>Escape</code> key when a cell
	is being edited.&nbsp; The return value is an empty string.&nbsp;
	Immediately before returning this value, the command generates the
	virtual event
	<code><b>&lt;&lt;TablelistCellRestored&gt;&gt;</b></code>.&nbsp; If no
	cell was being edited when the command was invoked then an empty string
	is returned without generating a virtual event.</dd>

	<dt><br>
	<a name="cellcget"></a><code><i>pathName</i> <b>cellcget</b>
	<i>cellIndex</i> <i>option</i></code></dt>

	<dd>Returns the current value of the cell configuration option given by
	<code><i>option</i></code> for the cell specified by
	<code><i>cellIndex</i></code>.&nbsp; <code><i>option</i></code> may
	have any of the values accepted by the <code><b><a href=
	"#cellconfigure">cellconfigure</a></b></code> command.</dd>

	<dt><br>
	<a name="cellconfigure"></a><code><i>pathName</i> <b>cellconfigure</b>
	<i>cellIndex</i> ?<i>option</i>? ?<i>value</i> <i>option</i>
	<i>value</i> ...?</code></dt>

	<dd>Queries or modifies the configuration options of the cell given by
	<code><i>cellIndex</i></code>.&nbsp; If no <code><i>option</i></code>
	is specified, the command returns a list describing all of the
	available options for the cell (see
	<code><b>Tk_ConfigureInfo</b></code> for information on the format of
	this list).&nbsp; If <code><i>option</i></code> is specified with no
	<code><i>value</i></code>, then the command returns a list describing
	the one named option (this list will be identical to the corresponding
	sublist of the value returned if no <code><i>option</i></code> is
	specified).&nbsp; If one or more
	<code><i>option</i></code>-<code><i>value</i></code> pairs are
	specified, then the command modifies the given cell option(s) to have
	the given value(s); in this case the return value is an empty
	string.&nbsp; <code><i>option</i></code> may have any of the values
	described in the <a href="#cell_options">CELL CONFIGURATION OPTIONS</a>
	section.</dd>

	<dt><br>
	<a name="cellindex"></a><code><i>pathName</i> <b>cellindex</b>
	<i>cellIndex</i></code></dt>

	<dd>Returns the canonical cell index value that corresponds to
	<code><i>cellIndex</i></code>, in the form
	<code><i>row</i><b>,</b><i>col</i></code>, where
	<code><i>row</i></code> and <code><i>col</i></code> are integers.</dd>

	<dt><br>
	<a name="cellselection"></a><code><i>pathName</i> <b>cellselection</b>
	<i>option</i> <i>args</i></code></dt>

	<dd>This command is used to adjust the cell selection within a
	tablelist widget.&nbsp; It has several forms, depending on
	<code><i>option</i></code>:</dd>

	<dd>
	  <dl>
	    <dt><br>
	    <code><i>pathName</i> <b>cellselection</b> <b>anchor</b>
	    <i>cellIndex</i></code></dt>

	    <dd>Sets the cell selection anchor to the element given by
	    <code><i>cellIndex</i></code>.&nbsp; If
	    <code><i>cellIndex</i></code> refers to a nonexistent or hidden
	    element, then the closest non-hidden element is used.&nbsp; The
	    cell selection anchor is the end of the cell selection that is
	    fixed while dragging out a cell selection with the mouse if the
	    selection type is <code><b>cell</b></code>.&nbsp; The cell index
	    <code><b>anchor</b></code> may be used to refer to the anchor
	    element.</dd>

	    <dt><br>
	    <code><i>pathName</i> <b>cellselection</b> <b>clear</b>
	    <i>firstCell</i> <i>lastCell</i></code><br>
	    <code><i>pathName</i> <b>cellselection</b> <b>clear</b>
	    <i>cellIndexList</i></code></dt>

	    <dd>If any of the elements between <code><i>firstCell</i></code>
	    and <code><i>lastCell</i></code> (inclusive) or corresponding to
	    the cell indices specified by the list
	    <code><i>cellIndexList</i></code> are selected, they are
	    deselected.&nbsp; The selection state is not changed for elements
	    outside the range given in the first form of the command or
	    different from those specified by the cell index list given in its
	    second form.</dd>

	    <dt><br>
	    <code><i>pathName</i> <b>cellselection</b> <b>includes</b>
	    <i>cellIndex</i></code></dt>

	    <dd>Returns <code>1</code> if the element indicated by
	    <code><i>cellIndex</i></code> is currently selected, <code>0</code>
	    if it isn't.</dd>

	    <dt><br>
	    <code><i>pathName</i> <b>cellselection</b> <b>set</b>
	    <i>firstCell</i> <i>lastCell</i></code><br>
	    <code><i>pathName</i> <b>cellselection</b> <b>set</b>
	    <i>cellIndexList</i></code></dt>

	    <dd>Selects all of the selectable non-hidden elements in the range
	    between <code><i>firstCell</i></code> and
	    <code><i>lastCell</i></code>, inclusive, or corresponding to the
	    indices specified by the list <code><i>cellIndexList</i></code>,
	    without affecting the selection state of any other elements.&nbsp;
	    An element is viewed as selectable if and only if the value of the
	    <code><b><a href="#selectable">-selectable</a></b></code> option of
	    the row containing it is true.</dd>
	  </dl>
	</dd>

	<dd><br>
	If the tablelist's <code><b><a href="#state">state</a></b></code> is
	<code><b>disabled</b></code> and <code><i>option</i></code> is
	different from <code><b>includes</b></code> then the command just
	returns an empty string, without performing any of the above
	actions.</dd>

	<dt><br>
	<a name="cget"></a><code><i>pathName</i> <b>cget</b>
	<i>option</i></code></dt>

	<dd>Returns the current value of the configuration option given by
	<code><i>option</i></code>, which may have any of the values accepted
	by the <code><b>tablelist::tablelist</b></code> command.</dd>

	<dt><br>
	<a name="columncget"></a><code><i>pathName</i> <b>columncget</b>
	<i>columnIndex</i> <i>option</i></code></dt>

	<dd>Returns the current value of the column configuration option given
	by <code><i>option</i></code> for the column specified by
	<code><i>columnIndex</i></code>.&nbsp; <code><i>option</i></code> may
	have any of the values accepted by the <code><b><a href=
	"#columnconfigure">columnconfigure</a></b></code> command.</dd>

	<dt><br>
	<a name="columnconfigure"></a><code><i>pathName</i>
	<b>columnconfigure</b> <i>columnIndex</i> ?<i>option</i>? ?<i>value</i>
	<i>option</i> <i>value</i> ...?</code></dt>

	<dd>Queries or modifies the configuration options of the column given
	by <code><i>columnIndex</i></code>.&nbsp; If no
	<code><i>option</i></code> is specified, the command returns a list
	describing all of the available options for the column (see
	<code><b>Tk_ConfigureInfo</b></code> for information on the format of
	this list).&nbsp; If <code><i>option</i></code> is specified with no
	<code><i>value</i></code>, then the command returns a list describing
	the one named option (this list will be identical to the corresponding
	sublist of the value returned if no <code><i>option</i></code> is
	specified).&nbsp; If one or more
	<code><i>option</i></code>-<code><i>value</i></code> pairs are
	specified, then the command modifies the given column option(s) to have
	the given value(s); in this case the return value is an empty
	string.&nbsp; <code><i>option</i></code> may have any of the values
	described in the <a href="#col_options">COLUMN CONFIGURATION
	OPTIONS</a> section.</dd>

	<dt><br>
	<a name="columncount"></a><code><i>pathName</i>
	<b>columncount</b></code></dt>

	<dd>Returns the number of columns in the tablelist widget.</dd>

	<dt><br>
	<a name="columnindex"></a><code><i>pathName</i> <b>columnindex</b>
	<i>columnIndex</i></code></dt>

	<dd>Returns the integer column index value that corresponds to
	<code><i>columnIndex</i></code>.</dd>

	<dt><br>
	<a name="columnwidth"></a><code><i>pathName</i> <b>columnwidth</b>
	<i>columnIndex</i>
	?<b>-requested</b>|<b>-stretched</b>|<b>-total</b>?</code></dt>

	<dd>Returns the current width in pixels of the column specified by
	<code><i>columnIndex</i></code>.&nbsp; If the optional argument is
	<code><b>-requested</b></code> (which is the default) then the return
	value is the number of pixels corresponding to the column width
	specified by the <code><b><a href="#columns">-columns</a></b></code>
	widget or <code><b><a href="#col_width">-width</a></b></code> column
	configuration option (possibly overridden by interactive column
	resizing); if the column width was specified as <code>0</code> (and was
	not changed by interactive column resizing) then the return value is
	the actual number of pixels corresponding to the widest non-hidden
	element of the column, including its header.&nbsp; With the
	<code><b>-stretched</b></code> option, the command returns the column
	width obtained by increasing the value described above by the number of
	additional pixels that might have been added to the requested column
	width by a stretch operation (see the <code><b><a href=
	"#stretch">-stretch</a></b></code> widget and <code><b><a href=
	"#col_stretchable">-stretchable</a></b></code> column configuration
	options).&nbsp; Finally, if the optional argument is
	<code><b>-total</b></code> then the return value is the stretched
	column width increased by the number of pixels corresponding to the
	left and right margins within the column; this value equals the width
	of the header label if the tablelist widget is mapped.</dd>

	<dt><br>
	<a name="configure"></a><code><i>pathName</i> <b>configure</b>
	?<i>option</i>? ?<i>value</i> <i>option</i> <i>value</i>
	...?</code></dt>

	<dd>Queries or modifies the configuration options of the widget.&nbsp;
	If no <code><i>option</i></code> is specified, the command returns a
	list describing all of the available options for
	<code><i>pathName</i></code> (see <code><b>Tk_ConfigureInfo</b></code>
	for information on the format of this list).&nbsp; If
	<code><i>option</i></code> is specified with no
	<code><i>value</i></code>, then the command returns a list describing
	the one named option (this list will be identical to the corresponding
	sublist of the value returned if no <code><i>option</i></code> is
	specified).&nbsp; If one or more
	<code><i>option</i></code>-<code><i>value</i></code> pairs are
	specified, then the command modifies the given widget option(s) to have
	the given value(s); in this case the return value is an empty
	string.&nbsp; <code><i>option</i></code> may have any of the values
	accepted by the <code><b>tablelist::tablelist</b></code> command.</dd>

	<dt><br>
	<a name="configcelllist"></a><code><i>pathName</i>
	<b>configcelllist</b> <i>cellConfigSpecList</i></code></dt>

	<dd>
	  For each cell index, option, and value specified by the list
	  <code><i>cellConfigSpecList</i></code>, the command modifies the
	  given option of the given cell to have the given value.&nbsp; The
	  argument <code><i>cellConfigSpecList</i></code> must be a list of the
	  form

	  <blockquote>
	    <pre>
<i>cellIndex</i> <i>option</i> <i>value</i> <i>cellIndex</i> <i>option</i> <i>value</i> ...
</pre>
	  </blockquote>

	  <p>where each <code><i>option</i></code> may have any of the values
	  described in the <a href="#cell_options">CELL CONFIGURATION
	  OPTIONS</a> section.&nbsp; The return value is an empty string.</p>

	  <p>This command has the same effect as</p>

	  <blockquote>
	    <pre>
eval [list $<i>pathName</i> <a href=
"#configcells">configcells</a>] $<i>cellConfigSpecList</i>
</pre>
	  </blockquote>

	  <p>but it is more efficient and easier to use.</p>
	</dd>

	<dt><a name="configcells"></a><code><i>pathName</i> <b>configcells</b>
	?<i>cellIndex</i> <i>option</i> <i>value</i> <i>cellIndex</i>
	<i>option</i> <i>value</i> ...?</code></dt>

	<dd>For each <code><i>cellIndex</i></code>, <code><i>option</i></code>,
	and <code><i>value</i></code>, the command modifies the given option of
	the given cell to have the given value.&nbsp; Each
	<code><i>option</i></code> may have any of the values described in the
	<a href="#cell_options">CELL CONFIGURATION OPTIONS</a> section.&nbsp;
	The return value is an empty string.</dd>

	<dt><br>
	<a name="configcolumnlist"></a><code><i>pathName</i>
	<b>configcolumnlist</b> <i>columnConfigSpecList</i></code></dt>

	<dd>
	  For each column index, option, and value specified by the list
	  <code><i>columnConfigSpecList</i></code>, the command modifies the
	  given option of the given column to have the given value.&nbsp; The
	  argument <code><i>columnConfigSpecList</i></code> must be a list of
	  the form

	  <blockquote>
	    <pre>
<i>columnIndex</i> <i>option</i> <i>value</i> <i>columnIndex</i> <i>option</i> <i>value</i> ...
</pre>
	  </blockquote>

	  <p>where each <code><i>option</i></code> may have any of the values
	  described in the <a href="#col_options">COLUMN CONFIGURATION
	  OPTIONS</a> section.&nbsp; The return value is an empty string.</p>

	  <p>This command has the same effect as</p>

	  <blockquote>
	    <pre>
eval [list $<i>pathName</i> <a href=
"#configcolumns">configcolumns</a>] $<i>columnConfigSpecList</i>
</pre>
	  </blockquote>

	  <p>but it is more efficient and easier to use.</p>
	</dd>

	<dt><a name="configcolumns"></a><code><i>pathName</i>
	<b>configcolumns</b> ?<i>columnIndex</i> <i>option</i> <i>value</i>
	<i>columnIndex</i> <i>option</i> <i>value</i> ...?</code></dt>

	<dd>For each <code><i>columnIndex</i></code>,
	<code><i>option</i></code>, and <code><i>value</i></code>, the command
	modifies the given option of the given column to have the given
	value.&nbsp; Each <code><i>option</i></code> may have any of the values
	described in the <a href="#col_options">COLUMN CONFIGURATION
	OPTIONS</a> section.&nbsp; The return value is an empty string.</dd>

	<dt><br>
	<a name="configrowlist"></a><code><i>pathName</i> <b>configrowlist</b>
	<i>rowConfigSpecList</i></code></dt>

	<dd>
	  For each row index, option, and value specified by the list
	  <code><i>rowConfigSpecList</i></code>, the command modifies the given
	  option of the given row to have the given value.&nbsp; The argument
	  <code><i>rowConfigSpecList</i></code> must be a list of the form

	  <blockquote>
	    <pre>
<i>index</i> <i>option</i> <i>value</i> <i>index</i> <i>option</i> <i>value</i> ...
</pre>
	  </blockquote>

	  <p>where each <code><i>option</i></code> may have any of the values
	  described in the <a href="#row_options">ROW CONFIGURATION OPTIONS</a>
	  section.&nbsp; The return value is an empty string.</p>

	  <p>This command has the same effect as</p>

	  <blockquote>
	    <pre>
eval [list $<i>pathName</i> <a href=
"#configrows">configrows</a>] $<i>rowConfigSpecList</i>
</pre>
	  </blockquote>

	  <p>but it is more efficient and easier to use.</p>
	</dd>

	<dt><a name="configrows"></a><code><i>pathName</i> <b>configrows</b>
	?<i>index</i> <i>option</i> <i>value</i> <i>index</i> <i>option</i>
	<i>value</i> ...?</code></dt>

	<dd>For each <code><i>index</i></code>, <code><i>option</i></code>, and
	<code><i>value</i></code>, the command modifies the given option of the
	given row to have the given value.&nbsp; Each
	<code><i>option</i></code> may have any of the values described in the
	<a href="#row_options">ROW CONFIGURATION OPTIONS</a> section.&nbsp; The
	return value is an empty string.</dd>

	<dt><br>
	<a name="containing"></a><code><i>pathName</i> <b>containing</b>
	<i>y</i></code></dt>

	<dd>Given a y-coordinate within the tablelist window, this command
	returns the index of the tablelist item containing that
	y-coordinate.&nbsp; If no corresponding item is found then the return
	value is <code>-1</code>.&nbsp; The coordinate <code><i>y</i></code> is
	expected to be relative to the tablelist window itself (not its body
	component).</dd>

	<dt><br>
	<a name="containingcell"></a><code><i>pathName</i>
	<b>containingcell</b> <i>x</i> <i>y</i></code></dt>

	<dd>Given an x- and a y-coordinate within the tablelist window, this
	command returns the index of the tablelist cell containing the point
	having these coordinates.&nbsp; If no corresponding cell is found then
	the row or column component (or both) of the return value is
	<code>-1</code>.&nbsp; The coordinates <code><i>x</i></code> and
	<code><i>y</i></code> are expected to be relative to the tablelist
	window itself (not its body component).</dd>

	<dt><br>
	<a name="containingcolumn"></a><code><i>pathName</i>
	<b>containingcolumn</b> <i>x</i></code></dt>

	<dd>Given an x-coordinate within the tablelist window, this command
	returns the index of the tablelist column containing that
	x-coordinate.&nbsp; If no corresponding column is found then the return
	value is <code>-1</code>.&nbsp; The coordinate <code><i>x</i></code> is
	expected to be relative to the tablelist window itself (not its body
	component).</dd>

	<dt><br>
	<a name="curcellselection"></a><code><i>pathName</i>
	<b>curcellselection</b></code></dt>

	<dd>Returns a list containing the canonical indices (of the form
	<code><i>row</i>,<i>col</i></code>, where <code><i>row</i></code> and
	<code><i>col</i></code> are numbers) of all of the non-hidden elements
	in the tablelist that are currently selected.&nbsp; If there are no
	such elements in the tablelist then an empty string is returned.</dd>

	<dt><br>
	<a name="curselection"></a><code><i>pathName</i>
	<b>curselection</b></code></dt>

	<dd>Returns a list containing the numerical indices of all of the items
	in the tablelist that contain at least one non-hidden selected
	element.&nbsp; If there are no such items in the tablelist then an
	empty string is returned.</dd>

	<dt><br>
	<a name="delete"></a><code><i>pathName</i> <b>delete</b> <i>first</i>
	<i>last</i></code><br>
	<code><i>pathName</i> <b>delete</b> <i>indexList</i></code></dt>

	<dd>Deletes one or more items of the tablelist if its <code><b><a href=
	"#state">state</a></b></code> is not
	<code><b>disabled</b></code>.&nbsp; In the first form of the command,
	<code><i>first</i></code> and <code><i>last</i></code> are indices
	specifying the first and last items in the range to delete.&nbsp; The
	command's second form accepts a list <code><i>indexList</i></code> of
	indices specifying the items to be deleted.&nbsp; Returns an empty
	string.</dd>

	<dt><br>
	<a name="deletecolumns"></a><code><i>pathName</i> <b>deletecolumns</b>
	<i>firstColumn</i> <i>lastColumn</i></code><br>
	<code><i>pathName</i> <b>deletecolumns</b>
	<i>columnIndexList</i></code></dt>

	<dd>Deletes one or more columns of the tablelist if its
	<code><b><a href="#state">state</a></b></code> is not
	<code><b>disabled</b></code>.&nbsp; In the first form of the command,
	<code><i>firstColumn</i></code> and <code><i>lastColumn</i></code> are
	indices specifying the first and last columns in the range to
	delete.&nbsp; The command's second form accepts a list
	<code><i>columnIndexList</i></code> of indices specifying the columns
	to be deleted.&nbsp; Returns an empty string.</dd>

	<dt><br>
	<a name="editcell"></a><code><i>pathName</i> <b>editcell</b>
	<i>cellIndex</i></code></dt>

	<dd>Starts the interactive editing of the cell's contents if the
	tablelist's <code><b><a href="#state">state</a></b></code> is not
	<code><b>disabled</b></code>, the cell's row and column are not hidden,
	and the cell is editable.&nbsp; Returns an empty string.&nbsp; See the
	<a href="#cell_editing">INTERACTIVE CELL EDITING</a> section for
	details on editablity and on the editing process.</dd>

	<dt><br>
	<a name="editwinpath"></a><code><i>pathName</i>
	<b>editwinpath</b></code></dt>

	<dd>Returns the path name of the temporary embedded widget used for
	interactive cell editing, created by the <code><b><a href=
	"#editcell">editcell</a></b></code> subcommand.&nbsp; If no cell is
	currently being edited then the return value is an empty string.&nbsp;
	This subcommand enables you to access the edit window from within the
	commands specified by the <code><b><a href=
	"#editstartcommand">-editstartcommand</a></b></code> and
	<code><b><a href="#editendcommand">-editendcommand</a></b></code>
	configuration options.</dd>

	<dt><br>
	<a name="entrypath"></a><code><i>pathName</i>
	<b>entrypath</b></code></dt>

	<dd>Returns the path name of the entry or entry-like component of the
	temporary embedded widget used for interactive cell editing, created by
	the <code><b><a href="#editcell">editcell</a></b></code>
	subcommand.&nbsp; If no cell is currently being edited or the editing
	is taking place with the aid of a Tk or tile checkbutton or mentry
	widget then the return value is an empty string; otherwise it is the
	path name of a Tk or tile entry, Tk text or spinbox, or BWidget Entry
	widget, which can be the edit window itself or one of its
	descendants.&nbsp; This subcommand enables you to access the entry or
	entry-like component of the temporary embedded widget from within the
	commands specified by the <code><b><a href=
	"#editstartcommand">-editstartcommand</a></b></code> and
	<code><b><a href="#editendcommand">-editendcommand</a></b></code>
	configuration options.</dd>

	<dt><br>
	<a name="fillcolumn"></a><code><i>pathName</i> <b>fillcolumn</b>
	<i>columnIndex</i> <i>text</i></code></dt>

	<dd>Sets all the elements of the specified column to the value
	<code><i>text</i></code>.</dd>

	<dt><br>
	<a name="finishediting"></a><code><i>pathName</i>
	<b>finishediting</b></code></dt>

	<dd>
	  This subcommand attempts to terminate the interactive editing of the
	  contents of the cell whose index was passed to the <code><b><a href=
	  "#editcell">editcell</a></b></code> subcommand by destroying the
	  temporary widget embedded into the cell and updating the cell's
	  contents.&nbsp; The exact steps involved are as follows:&nbsp; First,
	  the widget's final text is compared to its original one.&nbsp; If
	  they are equal then the edit window is destroyed and the cell's
	  original contents are restored.&nbsp; If the two strings are
	  different and the value of the <code><b><a href=
	  "#editendcommand">-editendcommand</a></b></code> configuration option
	  is a nonempty string, then the widget's final text is passed to that
	  command as its last argument (following the tablelist's path name as
	  well as the cell's row and column indices), the resulting script is
	  evaluated in the global scope, and the return value becomes the
	  cell's new contents after destroying the edit window.&nbsp; However,
	  if from within this script the <code><b><a href=
	  "#rejectinput">rejectinput</a></b></code> subcommand was invoked then
	  the cell's value is not changed and the embedded widget remains
	  displayed in the cell; in this case the command returns the boolean
	  value <code>0</code>.&nbsp; In all the other cases, the return value
	  is <code>1</code>.&nbsp; Immediately before returning the value
	  <code>1</code>, the command generates the virtual event
	  <code><b>&lt;&lt;TablelistCellUpdated&gt;&gt;</b></code>.&nbsp; If no
	  cell was being edited when the command was invoked then the same
	  value <code>1</code> is returned but no virtual event is generated.

	  <p>This subcommand is called <i>implicitly</i> by pressing
	  <code>Return</code> or <code>KP_Enter</code> (together with
	  <code>Control</code> if the edit window is a text widget) when
	  editing a cell, or by clicking with the left mouse button anywhere in
	  the tablelist's body, outside the cell just being edited, or moving
	  into another editable cell by using keyboard navigation.</p>

	  <p>There are also situations where an <i>explicit</i> invocation of
	  this subcommand is needed, in order to make sure that the cell just
	  being edited gets updated with the text entered by the user.&nbsp;
	  For example, if a tablelist widget is part of a dialog used for
	  editing some data, then the binding script associated with the button
	  designed to accept the data should call this subcommand, because
	  otherwise, if the button is pressed during interactive cell editing
	  then the text entered into the edit window will get lost.</p>
	</dd>

	<dt><a name="get"></a><code><i>pathName</i> <b>get</b> <i>first</i>
	<i>last</i></code><br>
	<code><i>pathName</i> <b>get</b> <i>indexList</i></code></dt>

	<dd>The first form of the command returns a list whose elements are all
	of the tablelist items (i.e., row contents) between
	<code><i>first</i></code> and <code><i>last</i></code>,
	inclusive.&nbsp; The value returned by the second form depends on the
	number of elements in the list <code><i>indexList</i></code>: if the
	latter contains exactly one index then the return value is the
	tablelist item indicated by that index (or an empty string if the index
	refers to a non-existent item); otherwise the command returns the list
	of all of the tablelist items corresponding to the indices specified by
	<code><i>indexList</i></code>.</dd>

	<dt><br>
	<a name="getcells"></a><code><i>pathName</i> <b>getcells</b>
	<i>firstCell</i> <i>lastCell</i></code><br>
	<code><i>pathName</i> <b>getcells</b> <i>cellIndexList</i></code></dt>

	<dd>The first form of the command returns a list whose elements are all
	of the tablelist elements (i.e., cell contents) between
	<code><i>firstCell</i></code> and <code><i>lastCell</i></code>,
	inclusive.&nbsp; The value returned by the second form depends on the
	number of elements in the list <code><i>cellIndexList</i></code>: if
	the latter contains exactly one cell index then the return value is the
	tablelist element indicated by that cell index; otherwise the command
	returns the list of all of the tablelist elements corresponding to the
	cell indices specified by <code><i>cellIndexList</i></code>.</dd>

	<dt><br>
	<a name="getcolumns"></a><code><i>pathName</i> <b>getcolumns</b>
	<i>firstColumn</i> <i>lastColumn</i></code><br>
	<code><i>pathName</i> <b>getcolumns</b>
	<i>columnIndexList</i></code></dt>

	<dd>The first form of the command returns a list whose elements are
	lists themselves, where each of the sublists corresponds to exactly one
	column between <code><i>firstColumn</i></code> and
	<code><i>lastColumn</i></code>, inclusive, and consists of all of the
	tablelist elements contained in that column.&nbsp; The value returned
	by the second form depends on the number of elements in the list
	<code><i>columnIndexList</i></code>: if the latter contains exactly one
	column index then the return value is a list consisting of all of the
	tablelist elements contained in the column indicated by that column
	index; otherwise the command returns a list whose elements are lists
	themselves, where each of the sublists corresponds to exactly one
	column index in <code><i>columnIndexList</i></code> and consists of all
	of the tablelist elements contained in that column.</dd>

	<dt><br>
	<a name="getkeys"></a><code><i>pathName</i> <b>getkeys</b> <i>first</i>
	<i>last</i></code><br>
	<code><i>pathName</i> <b>getkeys</b> <i>indexList</i></code></dt>

	<dd>The first form of the command returns a list whose elements are all
	of the sequence numbers associated with the tablelist items between
	<code><i>first</i></code> and <code><i>last</i></code>,
	inclusive.&nbsp; The value returned by the second form depends on the
	number of elements in the list <code><i>indexList</i></code>: if the
	latter contains exactly one index then the return value is the sequence
	number associated with the tablelist item indicated by that index (or
	an empty string if the index refers to a non-existent item); otherwise
	the command returns the list of all of the sequence numbers associated
	with the tablelist items corresponding to the indices specified by
	<code><i>indexList</i></code>.&nbsp; Each item of a tablelist widget
	has a unique sequence number that remains unchanged until the item is
	deleted, thus acting as a key that uniquely identifies the item even if
	the latter's position (i.e., row index) changes.&nbsp; This command
	provides read-only access to these internal item IDs.</dd>

	<dt><br>
	<a name="imagelabelpath"></a><code><i>pathName</i>
	<b>imagelabelpath</b> <i>cellIndex</i></code></dt>

	<dd>Returns the path name of the label widget containing the image
	embedded into the cell given by <code><i>cellIndex</i></code>, as
	specified with the <code><b><a href="#cell_image">-image</a></b></code>
	option of the <code><b><a href=
	"#cellconfigure">cellconfigure</a></b></code> subcommand.&nbsp; If no
	image is currently embedded into the cell then the return value is an
	empty string.</dd>

	<dt><br>
	<a name="index"></a><code><i>pathName</i> <b>index</b>
	<i>index</i></code></dt>

	<dd>Returns the integer row index value that corresponds to
	<code><i>index</i></code>.&nbsp; If <code><i>index</i></code> is
	<code><b>end</b></code> then the return value is the number of items in
	the tablelist (not the index of the last item).</dd>

	<dt><br>
	<a name="insert"></a><code><i>pathName</i> <b>insert</b> <i>index</i>
	?<i>item</i> <i>item</i> ...?</code></dt>

	<dd>Inserts zero or more new items in the widget's internal list just
	before the item given by <code><i>index</i></code> if the tablelist's
	<code><b><a href="#state">state</a></b></code> is not
	<code><b>disabled</b></code>.&nbsp; If <code><i>index</i></code> equals
	the number of items or is specified as <code><b>end</b></code> then the
	new items are added to the end of the widget's list.&nbsp; Tabulator
	characters are displayed as <code>\t</code> (i.e., a backslash followed
	by a <code>t</code>) but are inserted unchanged into the internal
	list.&nbsp; Newline characters will force line breaks, i.e., will give
	rise to multi-line elements (which are displayed in embedded message
	widgets, created on demand).&nbsp; The return value is an empty
	string.</dd>

	<dt><br>
	<a name="insertcolumnlist"></a><code><i>pathName</i>
	<b>insertcolumnlist</b> <i>columnIndex</i>
	<i>columnList</i></code></dt>

	<dd>
	  Inserts the columns specified by the list
	  <code><i>columnList</i></code> just before the column given by
	  <code><i>columnIndex</i></code> if the tablelist's <code><b><a href=
	  "#state">state</a></b></code> is not
	  <code><b>disabled</b></code>.&nbsp; If
	  <code><i>columnIndex</i></code> equals the number of columns or is
	  specified as <code><b>end</b></code> then the new columns are added
	  to the end of the column list.&nbsp; The argument
	  <code><i>columnList</i></code> must be a list containing the width,
	  title, and optional alignment specifications for the new columns, in
	  the same form as in the case of the <code><b><a href=
	  "#columns">-columns</a></b></code> configuration option.&nbsp; The
	  return value is an empty string.&nbsp; The elements of the new
	  columns are initially empty strings; the easiest way to change these
	  values is to use the <code><b><a href=
	  "#fillcolumn">fillcolumn</a></b></code> subcommand or the
	  <code><b><a href="#col_text">-text</a></b></code> column
	  configuration option.

	  <p>This command has the same effect as</p>

	  <blockquote>
	    <pre>
eval [list $<i>pathName</i> <a href=
"#insertcolumns">insertcolumns</a> $<i>columnIndex</i>] $<i>columnList</i>
</pre>
	  </blockquote>

	  <p>but it is more efficient and easier to use.</p>
	</dd>

	<dt><a name="insertcolumns"></a><code><i>pathName</i>
	<b>insertcolumns</b> <i>columnIndex</i> ?<i>width</i> <i>title</i>
	?<i>alignment</i>? <i>width</i> <i>title</i> ?<i>alignment</i>?
	...?</code></dt>

	<dd>Inserts zero or more new columns just before the column given by
	<code><i>columnIndex</i></code> if the tablelist's <code><b><a href=
	"#state">state</a></b></code> is not
	<code><b>disabled</b></code>.&nbsp; If <code><i>columnIndex</i></code>
	equals the number of columns or is specified as <code><b>end</b></code>
	then the new columns are added to the end of the column list.&nbsp; The
	arguments following the column index have the same meanings as in the
	case of the <code><b><a href="#columns">-columns</a></b></code>
	configuration option.&nbsp; The return value is an empty string.&nbsp;
	The elements of the new columns are initially empty strings; the
	easiest way to change these values is to use the <code><b><a href=
	"#fillcolumn">fillcolumn</a></b></code> subcommand or the
	<code><b><a href="#col_text">-text</a></b></code> column configuration
	option.</dd>

	<dt><br>
	<a name="insertlist"></a><code><i>pathName</i> <b>insertlist</b>
	<i>index</i> <i>itemList</i></code></dt>

	<dd>
	  Inserts the items of the list <code><i>itemList</i></code> in the
	  widget's internal list just before the item given by
	  <code><i>index</i></code> if the tablelist's <code><b><a href=
	  "#state">state</a></b></code> is not
	  <code><b>disabled</b></code>.&nbsp; If <code><i>index</i></code>
	  equals the number of items or is specified as <code><b>end</b></code>
	  then the new items are added to the end of the widget's list.&nbsp;
	  Tabulator characters are displayed as <code>\t</code> (i.e., a
	  backslash followed by a <code>t</code>) but are inserted unchanged
	  into the internal list.&nbsp; Newline characters will force line
	  breaks, i.e., will give rise to multi-line elements (which are
	  displayed in embedded message widgets, created on demand).&nbsp; The
	  return value is an empty string.

	  <p>This command has the same effect as</p>

	  <blockquote>
	    <pre>
eval [list $<i>pathName</i> <a href=
"#insert">insert</a> $<i>index</i>] $<i>itemList</i>
</pre>
	  </blockquote>

	  <p>but it is more efficient and easier to use.</p>
	</dd>

	<dt><a name="iselemsnipped"></a><code><i>pathName</i>
	<b>iselemsnipped</b> <i>cellIndex</i> <i>fullTextName</i></code></dt>

	<dd>Returns the value <code>1</code> if the text displayed in the cell
	specified by <code><i>cellIndex</i></code> is snipped and
	<code>0</code> otherwise.&nbsp; In both cases, the full (unsnipped)
	cell text is stored in the variable having the name given by
	<code><i>fullTextName</i></code>; this full text can be the cell's
	contents or the string obtained from the latter by using the
	<code><b><a href="#col_formatcommand">-formatcommand</a></b></code>
	option of the cell's column.&nbsp; The most common invocation of this
	command occurs within the procedure specified as the value of the
	<code><b><a href="#tooltipaddcommand">-tooltipaddcommand</a></b></code>
	configuration option.</dd>

	<dt><br>
	<a name="istitlesnipped"></a><code><i>pathName</i>
	<b>istitlesnipped</b> <i>columnIndex</i>
	<i>fullTextName</i></code></dt>

	<dd>Returns the value <code>1</code> if the text displayed in the
	header label specified by <code><i>columnIndex</i></code> is snipped
	and <code>0</code> otherwise.&nbsp; In both cases, the full (unsnipped)
	label text is stored in the variable having the name given by
	<code><i>fullTextName</i></code>.&nbsp; The most common invocation of
	this command occurs within the procedure specified as the value of the
	<code><b><a href="#tooltipaddcommand">-tooltipaddcommand</a></b></code>
	configuration option.</dd>

	<dt><br>
	<a name="itemlistvar"></a><code><i>pathName</i>
	<b>itemlistvar</b></code></dt>

	<dd>
	  Returns the name of a variable used by Tablelist to hold the widget's
	  internal list.&nbsp; The recommended way to use this variable is to
	  create a link to it with the aid of the <code><b>upvar</b></code>
	  command, like in the following example:

	  <blockquote>
	    <pre>
upvar #0 [.tbl itemlistvar] itemList
</pre>
	  </blockquote>

	  <p>In this example, the value of the variable <code>itemList</code>
	  will be the internal list of the tablelist widget
	  <code>.tbl</code>.&nbsp; Each element of the widget's internal list
	  corresponds to one item, and it is in turn a list whose elements
	  correspond to the elements of that item, except that it has one
	  additional element, holding the item's key.</p>

	  <p>The <code><b>itemlistvar</b></code> command provides an efficient
	  way for accessing this internal list, instead of retrieving the items
	  with the <code><b><a href="#get">get</a></b></code> subcommand or
	  using the <code><b><a href=
	  "#listvariable">-listvariable</a></b></code> option (these methods
	  consume significantly more memory).&nbsp; It can be useful in
	  situations where the elements of a tablelist widget are to be
	  accessed for creating text files, HTML output, XML data, database
	  commands, etc.&nbsp; This should, however, be a strictly readonly
	  access; otherwise the results will be unpredictable!</p>
	</dd>

	<dt><a name="labelpath"></a><code><i>pathName</i> <b>labelpath</b>
	<i>columnIndex</i></code></dt>

	<dd>Returns the path name of the header label corresponding to the
	column indicated by <code><i>columnIndex</i></code>.</dd>

	<dt><br>
	<a name="labels"></a><code><i>pathName</i> <b>labels</b></code></dt>

	<dd>Returns a list containing the path names of all header labels of
	the widget.</dd>

	<dt><br>
	<a name="move"></a><code><i>pathName</i> <b>move</b> <i>source</i>
	<i>target</i></code></dt>

	<dd>Moves the item indicated by <code><i>source</i></code> just before
	the one given by <code><i>target</i></code> if the tablelist's
	<code><b><a href="#state">state</a></b></code> is not
	<code><b>disabled</b></code>.&nbsp; If <code><i>target</i></code>
	equals the nunber of items or is specified as <code><b>end</b></code>
	then the source item is moved after the last one.&nbsp; Returns an
	empty string.</dd>

	<dt><br>
	<a name="movecolumn"></a><code><i>pathName</i> <b>movecolumn</b>
	<i>sourceColumn</i> <i>targetColumn</i></code></dt>

	<dd>Moves the column indicated by <code><i>sourceColumn</i></code> just
	before the one given by <code><i>targetColumn</i></code> if the
	tablelist's <code><b><a href="#state">state</a></b></code> is not
	<code><b>disabled</b></code>.&nbsp; If <code><i>targetColumn</i></code>
	equals the number of columns or is specified as <code><b>end</b></code>
	then the source column is moved after the last one.&nbsp; Returns an
	empty string.</dd>

	<dt><br>
	<a name="nearest"></a><code><i>pathName</i> <b>nearest</b>
	<i>y</i></code></dt>

	<dd>Given a y-coordinate within the tablelist window, this command
	returns the index of the non-hidden tablelist item nearest to that
	y-coordinate.&nbsp; The coordinate <code><i>y</i></code> is expected to
	be relative to the tablelist window itself (not its body
	component).</dd>

	<dt><br>
	<a name="nearestcell"></a><code><i>pathName</i> <b>nearestcell</b>
	<i>x</i> <i>y</i></code></dt>

	<dd>Given an x- and a y-coordinate within the tablelist window, this
	command returns the index of the non-hidden tablelist cell nearest to
	the point having these coordinates.&nbsp; The coordinates
	<code><i>x</i></code> and <code><i>y</i></code> are expected to be
	relative to the tablelist window itself (not its body component).</dd>

	<dt><br>
	<a name="nearestcolumn"></a><code><i>pathName</i> <b>nearestcolumn</b>
	<i>x</i></code></dt>

	<dd>Given an x-coordinate within the tablelist window, this command
	returns the index of the non-hidden tablelist column nearest to that
	x-coordinate.&nbsp; The coordinate <code><i>x</i></code> is expected to
	be relative to the tablelist window itself (not its body
	component).</dd>

	<dt><br>
	<a name="rejectinput"></a><code><i>pathName</i>
	<b>rejectinput</b></code></dt>

	<dd>If invoked from within the Tcl command specified by the
	<code><b><a href="#editendcommand">-editendcommand</a></b></code>
	configuration option, then this subcommand prevents the termination of
	the interactive editing of the contents of the cell whose index was
	passed to the <code><b><a href="#editcell">editcell</a></b></code>
	subcommand.&nbsp; It invokes the <code><b><a href=
	"#seecell">seecell</a></b></code> subcommand to make sure the
	respective cell becomes visible (in case it was scrolled out of view),
	and sets the focus to the temporary widget embedded into the
	cell.&nbsp; This command enables you to reject the widget's text during
	the final validation of the string intended to become the new cell
	contents.</dd>

	<dt><br>
	<a name="resetsortinfo"></a><code><i>pathName</i>
	<b>resetsortinfo</b></code></dt>

	<dd>Resets the information about the sorting of the items.&nbsp;
	Subsequent invocations of <code><b><a href=
	"#sortcolumn">sortcolumn</a></b></code> and <code><b><a href=
	"#sortorder">sortorder</a></b></code> will return <code>-1</code> and
	an empty string, respectively.&nbsp; Similarly, subsequent invocations
	of <code><b><a href="#sortcolumnlist">sortcolumnlist</a></b></code> and
	<code><b><a href="#sortorderlist">sortorderlist</a></b></code> will
	return an empty string.&nbsp; This command also removes any existing
	up- or down-arrows displayed by an earlier invocation of
	<code><b><a href="#sortbycolumn">sortbycolumn</a></b></code> or
	<code><b><a href=
	"#sortbycolumnlist">sortbycolumnlist</a></b></code>.&nbsp; The return
	value is an empty string.</dd>

	<dt><br>
	<a name="rowcget"></a><code><i>pathName</i> <b>rowcget</b> <i>index</i>
	<i>option</i></code></dt>

	<dd>Returns the current value of the row configuration option given by
	<code><i>option</i></code> for the row specified by
	<code><i>index</i></code>.&nbsp; <code><i>option</i></code> may have
	any of the values accepted by the <code><b><a href=
	"#rowconfigure">rowconfigure</a></b></code> command.</dd>

	<dt><br>
	<a name="rowconfigure"></a><code><i>pathName</i> <b>rowconfigure</b>
	<i>index</i> ?<i>option</i>? ?<i>value</i> <i>option</i> <i>value</i>
	...?</code></dt>

	<dd>Queries or modifies the configuration options of the row given by
	<code><i>index</i></code>.&nbsp; If no <code><i>option</i></code> is
	specified, the command returns a list describing all of the available
	options for the row (see <code><b>Tk_ConfigureInfo</b></code> for
	information on the format of this list).&nbsp; If
	<code><i>option</i></code> is specified with no
	<code><i>value</i></code>, then the command returns a list describing
	the one named option (this list will be identical to the corresponding
	sublist of the value returned if no <code><i>option</i></code> is
	specified).&nbsp; If one or more
	<code><i>option</i></code>-<code><i>value</i></code> pairs are
	specified, then the command modifies the given row option(s) to have
	the given value(s); in this case the return value is an empty
	string.&nbsp; <code><i>option</i></code> may have any of the values
	described in the <a href="#row_options">ROW CONFIGURATION OPTIONS</a>
	section.</dd>

	<dt><br>
	<a name="scan"></a><code><i>pathName</i> <b>scan</b> <i>option</i>
	<i>args</i></code></dt>

	<dd>This command is used to implement scanning on tablelist
	widgets.&nbsp; It has two forms, depending on
	<code><i>option</i></code>:</dd>

	<dd>
	  <dl>
	    <dt><br>
	    <code><i>pathName</i> <b>scan</b> <b>mark</b> <i>x</i>
	    <i>y</i></code></dt>

	    <dd>Records <code><i>x</i></code> and <code><i>y</i></code> and the
	    current view in the tablelist window; used in conjunction with
	    later&nbsp; <code><b>scan</b> <b>dragto</b></code>&nbsp;
	    commands.&nbsp; Typically this command is associated with a mouse
	    button press in the body component of the widget.&nbsp; It returns
	    an empty string.&nbsp; The coordinates <code><i>x</i></code> and
	    <code><i>y</i></code> are expected to be relative to the tablelist
	    window itself (not its body component).</dd>

	    <dt><br>
	    <code><i>pathName</i> <b>scan</b> <b>dragto</b> <i>x</i>
	    <i>y</i></code></dt>

	    <dd>This command computes the difference between its
	    <code><i>x</i></code> and <code><i>y</i></code> arguments to the
	    last&nbsp; <code><b>scan</b> <b>mark</b></code>&nbsp; command for
	    the widget.&nbsp; It then adjusts the view (the vertical one only
	    in the body component) by 10 times the difference in
	    coordinates.&nbsp; This command is typically associated with mouse
	    motion events in the body component of the widget, to produce the
	    effect of dragging the table at high speed through the
	    window.&nbsp; The return value is an empty string.&nbsp; The
	    coordinates <code><i>x</i></code> and <code><i>y</i></code> are
	    expected to be relative to the tablelist window itself (not its
	    body component).</dd>
	  </dl>
	</dd>

	<dt><br>
	<a name="see"></a><code><i>pathName</i> <b>see</b>
	<i>index</i></code></dt>

	<dd>Adjusts the view in the tablelist so that the item given by
	<code><i>index</i></code> is visible.&nbsp; If the item is already
	visible then the command has no effect; if the item is near one edge of
	the window then the tablelist scrolls to bring the item into view at
	the edge; otherwise the tablelist scrolls to center the item.</dd>

	<dt><br>
	<a name="seecell"></a><code><i>pathName</i> <b>seecell</b>
	<i>cellIndex</i></code></dt>

	<dd>Adjusts the view in the tablelist so that the cell given by
	<code><i>cellIndex</i></code> is visible.&nbsp; If the cell is already
	visible then the command has no effect; if the cell is near one edge of
	the window then the tablelist scrolls to bring the cell into view at
	the edge; otherwise the tablelist scrolls to center the cell.&nbsp; If
	the value of the <code><b><a href=
	"#titlecolumns">-titlecolumns</a></b></code> option is positive then
	the centering of the cell is only done vertically; the horizontal
	scrolling (which in this case is performed column-wise) will just bring
	the cell into view next to the title columns or at the right edge of
	the window.</dd>

	<dt><br>
	<a name="seecolumn"></a><code><i>pathName</i> <b>seecolumn</b>
	<i>columnIndex</i></code></dt>

	<dd>Adjusts the view in the tablelist so that the column given by
	<code><i>columnIndex</i></code> is visible.&nbsp; If the column is
	already visible then the command has no effect; if the column is near
	one edge of the window then the tablelist scrolls horizontally to bring
	the column into view at the edge; otherwise the tablelist scrolls
	horizontally to center the column.&nbsp; If the value of the
	<code><b><a href="#titlecolumns">-titlecolumns</a></b></code> option is
	positive then the horizontal scrolling (which in this case is performed
	column-wise) will just bring the column into view next to the title
	columns or at the right edge of the window.</dd>

	<dt><br>
	<a name="selection"></a><code><i>pathName</i> <b>selection</b>
	<i>option</i> <i>args</i></code></dt>

	<dd>This command is used to adjust the selection within a tablelist
	widget.&nbsp; It has several forms, depending on
	<code><i>option</i></code>:</dd>

	<dd>
	  <dl>
	    <dt><br>
	    <code><i>pathName</i> <b>selection</b> <b>anchor</b>
	    <i>index</i></code></dt>

	    <dd>Sets the selection anchor to the item given by
	    <code><i>index</i></code>.&nbsp; If <code><i>index</i></code>
	    refers to a nonexistent or hidden item, then the closest non-hidden
	    item is used.&nbsp; The selection anchor is the end of the
	    selection that is fixed while dragging out a selection with the
	    mouse if the selection type is <code><b>row</b></code>.&nbsp; The
	    index <code><b>anchor</b></code> may be used to refer to the anchor
	    item.</dd>

	    <dt><br>
	    <code><i>pathName</i> <b>selection</b> <b>clear</b> <i>first</i>
	    <i>last</i></code><br>
	    <code><i>pathName</i> <b>selection</b> <b>clear</b>
	    <i>indexList</i></code></dt>

	    <dd>If any of the items between <code><i>first</i></code> and
	    <code><i>last</i></code> (inclusive) or corresponding to the
	    indices specified by the list <code><i>indexList</i></code> contain
	    at least one selected cell, they are deselected.&nbsp; The
	    selection state is not changed for items outside the range given in
	    the first form of the command or different from those specified by
	    the index list given in its second form.</dd>

	    <dt><br>
	    <code><i>pathName</i> <b>selection</b> <b>includes</b>
	    <i>index</i></code></dt>

	    <dd>Returns <code>1</code> if the item indicated by
	    <code><i>index</i></code> contains at least one non-hidden selected
	    cell, <code>0</code> if it doesn't.</dd>

	    <dt><br>
	    <code><i>pathName</i> <b>selection</b> <b>set</b> <i>first</i>
	    <i>last</i></code><br>
	    <code><i>pathName</i> <b>selection</b> <b>set</b>
	    <i>indexList</i></code></dt>

	    <dd>Selects all of the selectable items in the range between
	    <code><i>first</i></code> and <code><i>last</i></code>, inclusive,
	    or corresponding to the indices specified by the list
	    <code><i>indexList</i></code>, without affecting the selection
	    state of any other items.</dd>
	  </dl>
	</dd>

	<dd><br>
	If the tablelist's <code><b><a href="#state">state</a></b></code> is
	<code><b>disabled</b></code> and <code><i>option</i></code> is
	different from <code><b>includes</b></code> then the command just
	returns an empty string, without performing any of the above
	actions.</dd>

	<dt><br>
	<a name="separatorpath"></a><code><i>pathName</i> <b>separatorpath</b>
	?<i>columnIndex</i>?</code></dt>

	<dd>If the optional argument is not specified, then this command
	returns the path name of the special separator displayed to mark the
	end of the title columns if the value of the <code><b><a href=
	"#titlecolumns">-titlecolumns</a></b></code> option is positive and an
	empty string otherwise.&nbsp; If the optional argument is present, then
	the command returns the path name of the separator attached to the
	right edge of the header label indicated by
	<code><i>columnIndex</i></code> if the value of the <code><b><a href=
	"#showseparators">-showseparators</a></b></code> configuration option
	is true and an empty string otherwise.</dd>

	<dt><br>
	<a name="separators"></a><code><i>pathName</i>
	<b>separators</b></code></dt>

	<dd>Returns a list containing the path names of all column
	separators.&nbsp; If the value of the <code><b><a href=
	"#titlecolumns">-titlecolumns</a></b></code> option is positive then
	the first element of the list will be the path name of the special
	separator displayed to mark the end of the title columns.&nbsp; Whether
	the path names of the other separators are included in the list,
	depends on the value of the <code><b><a href=
	"#showseparators">-showseparators</a></b></code> configuration
	option.</dd>

	<dt><br>
	<a name="size"></a><code><i>pathName</i> <b>size</b></code></dt>

	<dd>Returns the total number of items in the tablelist widget.</dd>

	<dt><br>
	<a name="sort"></a><code><i>pathName</i> <b>sort</b>
	?<b>-increasing</b>|<b>-decreasing</b>?</code></dt>

	<dd>Sorts the items in increasing or decreasing order, as specified by
	the optional argument.&nbsp; The default is
	<code><b>-increasing</b></code>.&nbsp; Uses the value of the
	<code><b><a href="#sortcommand">-sortcommand</a></b></code> widget
	configuration option as comparison command.&nbsp;
	<code><b>sort</b></code> also removes any existing up- or down-arrows
	displayed by an earlier invocation of <code><b><a href=
	"#sortbycolumn">sortbycolumn</a></b></code> or <code><b><a href=
	"#sortbycolumnlist">sortbycolumnlist</a></b></code>.&nbsp; After
	sorting the items, the command conditionally adjusts the vertical view
	as follows: (a) if interactive cell editing is in progress then the
	cell being edited is brought into view; (b) else, if exactly one item
	is selected then the view is shifted to bring that item into view; (c)
	else, if the tablelist's body is the most recent window to have the
	input focus among all the windows in the same top-level as the widget
	itself then the currently active item is brought into view.</dd>

	<dt><br>
	<a name="sortbycolumn"></a><code><i>pathName</i> <b>sortbycolumn</b>
	<i>columnIndex</i> ?<b>-increasing</b>|<b>-decreasing</b>?</code></dt>

	<dd>
	  Sorts the items based on the elements of the column given by
	  <code><i>columnIndex</i></code>, in increasing or decreasing order,
	  as specified by the optional argument.&nbsp; The default is
	  <code><b>-increasing</b></code>.&nbsp; The sorting process is
	  controlled by the values of the <code><b><a href=
	  "#col_sortmode">-sortmode</a></b></code> and <code><b><a href=
	  "#col_sortcommand">-sortcommand</a></b></code> options for the given
	  column.&nbsp; If both the value of the <code><b><a href=
	  "#showarrow">-showarrow</a></b></code> configuration option and that
	  of the <code><b><a href="#col_showarrow">-showarrow</a></b></code>
	  option for the specified column are true then an up- or down-arrow
	  indicating the sort order will be placed into the column's
	  label.&nbsp; The shape of the arrow depends on the command's optional
	  argument and on the value of the <code><b><a href=
	  "#incrarrowtype">-incrarrowtype</a></b></code> configuration
	  option.&nbsp; If the label's text is right-aligned then the arrow
	  will be displayed on the left side of the label, otherwise on its
	  right side.&nbsp; After sorting the items, the vertical view is
	  adjusted in the same way as in the case of the <code><b><a href=
	  "#sort">sort</a></b></code> subcommand.

	  <p>The actions described above are only performed if the specified
	  column's <code><b><a href=
	  "#col_showlinenumbers">-showlinenumbers</a></b></code> option hasn't
	  been set to true.</p>
	</dd>

	<dt><a name="sortbycolumnlist"></a><code><i>pathName</i>
	<b>sortbycolumnlist</b> <i>columnIndexList</i>
	?<i>sortOrderList</i>?</code></dt>

	<dd>
	  Sorts the items based on the elements of the columns given by the
	  <code><i>columnIndexList</i></code> argument, which must be a list of
	  distinct column indices.&nbsp; Only those elements of this list are
	  considered significant that identify columns whose <code><b><a href=
	  "#col_showlinenumbers">-showlinenumbers</a></b></code> option hasn't
	  been set to true.

	  <p>The items are first sorted based on the column specified by the
	  last significant element of <code><i>columnIndexList</i></code>, then
	  based on the one given by the last but one significant element, and
	  so on.&nbsp; The order of each sort operation is taken from the
	  optional argument <code><i>sortOrderList</i></code>, whose elements
	  must be (abbreviations of) <code><b>increasing</b></code> or
	  <code><b>decreasing</b></code>.&nbsp; If this argument was not
	  specified or contains less elements than
	  <code><i>columnIndexList</i></code> then the missing sort orders are
	  assumed to be <code><b>increasing</b></code>.&nbsp; Each sorting
	  process is controlled by the values of the <code><b><a href=
	  "#col_sortmode">-sortmode</a></b></code> and <code><b><a href=
	  "#col_sortcommand">-sortcommand</a></b></code> options for the
	  respective column.&nbsp; If the column's index was specified among
	  the first 9 significant elements of
	  <code><i>columnIndexList</i></code> and both the value of the
	  <code><b><a href="#showarrow">-showarrow</a></b></code> configuration
	  option and that of the <code><b><a href=
	  "#col_showarrow">-showarrow</a></b></code> option for that column are
	  true then an up- or down-arrow indicating the sort order will be
	  placed into the column's label.&nbsp; The shape of the arrow depends
	  on the respective sort order and on the value of the
	  <code><b><a href="#incrarrowtype">-incrarrowtype</a></b></code>
	  configuration option.&nbsp; If the label's text is right-aligned then
	  the arrow will be displayed on the left side of the label, otherwise
	  on its right side.&nbsp; If more than one sort arrows are to be
	  displayed then the first 9 sort ranks (<code>1</code> for the first
	  significant element of <code><i>columnIndexList</i></code>,
	  <code>2</code> for the second one, and so on) will also be shown to
	  the right of the arrows.&nbsp; After sorting the items, the vertical
	  view is adjusted in the same way as in the case of the
	  <code><b><a href="#sort">sort</a></b></code> subcommand.</p>
	</dd>

	<dt><a name="sortcolumn"></a><code><i>pathName</i>
	<b>sortcolumn</b></code></dt>

	<dd>Returns the numerical index of the column by which the items were
	last sorted with the aid of the <code><b><a href=
	"#sortbycolumn">sortbycolumn</a></b></code> or <code><b><a href=
	"#sortbycolumnlist">sortbycolumnlist</a></b></code> command, or
	<code>-1</code> if they were last sorted with the <code><b><a href=
	"#sort">sort</a></b></code> command or haven't been sorted at all, or
	the sort information was reset by invoking <code><b><a href=
	"#resetsortinfo">resetsortinfo</a></b></code>.</dd>

	<dt><br>
	<a name="sortcolumnlist"></a><code><i>pathName</i>
	<b>sortcolumnlist</b></code></dt>

	<dd>Returns a list consisting of the numerical indices of the columns
	by which the items were last sorted with the aid of the
	<code><b><a href="#sortbycolumnlist">sortbycolumnlist</a></b></code> or
	<code><b><a href="#sortbycolumn">sortbycolumn</a></b></code> command
	(in the second case the list will contain exactly one element), or an
	empty string if they were last sorted with the <code><b><a href=
	"#sort">sort</a></b></code> command or haven't been sorted at all, or
	the sort information was reset by invoking <code><b><a href=
	"#resetsortinfo">resetsortinfo</a></b></code>.</dd>

	<dt><br>
	<a name="sortorder"></a><code><i>pathName</i>
	<b>sortorder</b></code></dt>

	<dd>Returns the sort order (as <code><b>increasing</b></code> or
	<code><b>decreasing</b></code>) from the last sorting performed by the
	<code><b><a href="#sort">sort</a></b></code>, <code><b><a href=
	"#sortbycolumn">sortbycolumn</a></b></code>, or <code><b><a href=
	"#sortbycolumnlist">sortbycolumnlist</a></b></code> command, or an
	empty string if the items haven't been sorted at all, or the sort
	information was reset by invoking <code><b><a href=
	"#resetsortinfo">resetsortinfo</a></b></code>.</dd>

	<dt><br>
	<a name="sortorderlist"></a><code><i>pathName</i>
	<b>sortorderlist</b></code></dt>

	<dd>Returns a list consisting of the sort orders (as
	<code><b>increasing</b></code> or <code><b>decreasing</b></code>) from
	the last invocation of the <code><b><a href=
	"#sortbycolumnlist">sortbycolumnlist</a></b></code> or
	<code><b><a href="#sortbycolumn">sortbycolumn</a></b></code> command
	(in the second case the list will contain exactly one element), or an
	empty string if the items were last sorted with the <code><b><a href=
	"#sort">sort</a></b></code> command or haven't been sorted at all, or
	the sort information was reset by invoking <code><b><a href=
	"#resetsortinfo">resetsortinfo</a></b></code>.</dd>

	<dt><br>
	<a name="togglecolumnhide"></a><code><i>pathName</i>
	<b>togglecolumnhide</b> <i>firstColumn</i> <i>lastColumn</i></code><br>
	<code><i>pathName</i> <b>togglecolumnhide</b>
	<i>columnIndexList</i></code></dt>

	<dd>Toggles the value of the <code><b><a href=
	"#col_hide">-hide</a></b></code> option for one or more columns of the
	tablelist.&nbsp; In the first form of the command,
	<code><i>firstColumn</i></code> and <code><i>lastColumn</i></code> are
	indices specifying the first and last columns in the range whose
	visibility is to be toggled.&nbsp; The command's second form accepts a
	list <code><i>columnIndexList</i></code> of indices specifying the
	columns whose visibility is to be toggled.&nbsp; Returns an empty
	string.&nbsp; The main advantage of using this command instead of
	invoking <code><b><a href=
	"#columnconfigure">columnconfigure</a></b></code> for each of the
	specified columns is that it causes only one redisplay of the widget's
	contents, thus being significantly faster.</dd>

	<dt><br>
	<a name="togglerowhide"></a><code><i>pathName</i> <b>togglerowhide</b>
	<i>first</i> <i>last</i></code><br>
	<code><i>pathName</i> <b>togglerowhide</b> <i>indexList</i></code></dt>

	<dd>
	  Toggles the value of the <code><b><a href=
	  "#row_hide">-hide</a></b></code> option for one or more rows of the
	  tablelist.&nbsp; In the first form of the command,
	  <code><i>first</i></code> and <code><i>last</i></code> are indices
	  specifying the first and last rows in the range whose visibility is
	  to be toggled.&nbsp; The command's second form accepts a list
	  <code><i>indexList</i></code> of indices specifying the rows whose
	  visibility is to be toggled.&nbsp; Returns an empty string.&nbsp;
	  Just like the <code><b>-hide</b></code> row configuration option,
	  this subcommand is not supported for Tk versions earlier than 8.3.

	  <p><b>CAUTION:</b>&nbsp; Tk versions 8.3 - 8.4.12 had a bug that
	  caused a segmentation fault if the whole content of a text widget was
	  elided.&nbsp; This bug was also present in Tk 8.5.a1 - 8.5.a3.&nbsp;
	  When using one of these earlier Tk versions, this bug will produce a
	  crash if all the rows of a tablelist widget are hidden.&nbsp; It is
	  your responsibility to avoid such situations when using a Tk version
	  having this bug!</p>
	</dd>

	<dt><a name="windowpath"></a><code><i>pathName</i> <b>windowpath</b>
	<i>cellIndex</i></code></dt>

	<dd>Returns the path name of the window contained in the cell given by
	<code><i>cellIndex</i></code>, created with the <code><b><a href=
	"#cell_window">-window</a></b></code> option of the <code><b><a href=
	"#cellconfigure">cellconfigure</a></b></code> subcommand.&nbsp; If no
	window is currently embedded into the cell then the return value is an
	empty string.</dd>

	<dt><br>
	<a name="xview"></a><code><i>pathName</i> <b>xview</b>
	<i>args</i></code></dt>

	<dd>This command is used to query and change the horizontal position of
	the information in the widget's window.&nbsp; It can take any of the
	following forms:</dd>

	<dd>
	  <dl>
	    <dt><br>
	    <code><i>pathName</i> <b>xview</b></code></dt>

	    <dd>Returns a list containing two elements.&nbsp; Each element is a
	    real fraction between <code>0</code> and <code>1</code>; together
	    they describe the horizontal span that is visible in the
	    window.&nbsp; For example, if the first element is <code>.2</code>
	    and the second element is <code>.6</code>, 20% of the tablelist's
	    scrollable text is off-screen to the left, the middle 40% is
	    visible in the window, and 40% of the scrollable text is off-screen
	    to the right.&nbsp; These are the same values passed to scrollbars
	    via the <code><b>-xscrollcommand</b></code> option.</dd>

	    <dt><br>
	    <code><i>pathName</i> <b>xview</b> <i>units</i></code></dt>

	    <dd>If the value of the <code><b><a href=
	    "#titlecolumns">-titlecolumns</a></b></code> option is positive
	    then this command adjusts the view in the window so that the column
	    whose offset from the end of the title column area equals
	    <code><i>units</i></code> non-hidden columns is displayed next to
	    the title columns.&nbsp; Otherwise the command adjusts the view in
	    the window so that the character position given by
	    <code><i>units</i></code> is displayed at the left edge of the
	    window.&nbsp; Character positions are defined by the width of the
	    character <code><b>0</b></code>.</dd>

	    <dt><br>
	    <code><i>pathName</i> <b>xview</b> <b>moveto</b>
	    <i>fraction</i></code></dt>

	    <dd>Adjusts the view in the window so that
	    <code><i>fraction</i></code> of the total width of the scrollable
	    tablelist text is off-screen to the left.&nbsp;
	    <code><i>fraction</i></code> must be a fraction between
	    <code>0</code> and <code>1</code>.</dd>

	    <dt><br>
	    <code><i>pathName</i> <b>xview</b> <b>scroll</b> <i>number</i>
	    <i>what</i></code></dt>

	    <dd>This command shifts the view in the window left or right
	    according to <code><i>number</i></code> and
	    <code><i>what</i></code>.&nbsp; <code><i>number</i></code> must be
	    an integer.&nbsp; <code><i>what</i></code> must be either
	    <code><b>units</b></code> or <code><b>pages</b></code> or an
	    abbreviation of one of these.&nbsp; If <code><i>what</i></code> is
	    <code><b>units</b></code>, the view adjusts left or right by
	    <code><i>number</i></code> non-hidden columns or character units
	    (the width of the <code><b>0</b></code> character) on the display,
	    depending on the value of the <code><b><a href=
	    "#titlecolumns">-titlecolumns</a></b></code> option; if
	    <code><i>what</i></code> is <code><b>pages</b></code> then the view
	    adjusts by <code><i>number</i></code> screenfuls.&nbsp; If
	    <code><i>number</i></code> is negative then columns or characters
	    farther to the left become visible; if it is positive then columns
	    or characters farther to the right become visible.</dd>
	  </dl>
	</dd>

	<dt><br>
	<a name="yview"></a><code><i>pathName</i> <b>yview</b>
	<i>args</i></code></dt>

	<dd>This command is used to query and change the vertical position of
	the text in the window of the widget's body component.&nbsp; It can
	take any of the following forms:</dd>

	<dd>
	  <dl>
	    <dt><br>
	    <code><i>pathName</i> <b>yview</b></code></dt>

	    <dd>Returns a list containing two elements, both of which are real
	    fractions between <code>0</code> and <code>1</code>.&nbsp; The
	    first element gives the position of the non-hidden tablelist item
	    at the top of the window, relative to the tablelist as a whole
	    (<code>0.5</code> means it is halfway through the tablelist, for
	    example).&nbsp; The second element gives the position of the
	    non-hidden tablelist item just after the last one in the window,
	    relative to the tablelist as a whole.&nbsp; These are the same
	    values passed to scrollbars via the
	    <code><b>-yscrollcommand</b></code> option.</dd>

	    <dt><br>
	    <code><i>pathName</i> <b>yview</b> <i>units</i></code></dt>

	    <dd>Adjusts the view in the window so that the item whose offset
	    equals <code><i>units</i></code> non-hidden rows is displayed at
	    the top of the window.</dd>

	    <dt><br>
	    <code><i>pathName</i> <b>yview</b> <b>moveto</b>
	    <i>fraction</i></code></dt>

	    <dd>Adjusts the view in the window so that the non-hidden item
	    given by <code><i>fraction</i></code> appears at the top of the
	    window.&nbsp; <code><i>fraction</i></code> is a fraction between
	    <code>0</code> and <code>1</code>; <code>0</code> indicates the
	    first non-hidden item in the tablelist, <code>0.33</code> indicates
	    the non-hidden item one-third the way through the tablelist, and so
	    on.</dd>

	    <dt><br>
	    <code><i>pathName</i> <b>yview</b> <b>scroll</b> <i>number</i>
	    <i>what</i></code></dt>

	    <dd>This command shifts the view in the window up or down according
	    to <code><i>number</i></code> and <code><i>what</i></code>.&nbsp;
	    <code><i>number</i></code> must be an integer.&nbsp;
	    <code><i>what</i></code> must be either <code><b>units</b></code>
	    or <code><b>pages</b></code> or an abbreviation of one of
	    these.&nbsp; If <code><i>what</i></code> is
	    <code><b>units</b></code>, the view adjusts up or down by
	    <code><i>number</i></code> non-hidden rows; if it is
	    <code><b>pages</b></code> then the view adjusts by
	    <code><i>number</i></code> screenfuls.&nbsp; If
	    <code><i>number</i></code> is negative then earlier items become
	    visible; if it is positive then later items become visible.</dd>
	  </dl>
	</dd>
      </dl>
    </dd>

    <dt><br>
    <a name="body_bindings"></a><b>DEFAULT AND INDIVIDUAL BINDINGS FOR THE
    TABLELIST BODY</b></dt>

    <dd>
      The body component of a tablelist is implemented as a text widget whose
      binding tag <code><b>Text</b></code> is replaced with a new binding tag
      called <code><b>TablelistBody</b></code>.&nbsp; The latter has all the
      events of the <code><b>Listbox</b></code> widget class, and several of
      its binding scripts are obtained from those of
      <code><b>Listbox</b></code> by replacing the event fields
      <code><b>%W</b></code>, <code><b>%x</b></code>, and
      <code><b>%y</b></code> with the path name of the tablelist widget and the
      x and y coordinates relative to the latter.&nbsp; These values are
      assigned to the help variables <code><b>tablelist::W</b></code>,
      <code><b>tablelist::x</b></code>, and <code><b>tablelist::y</b></code> by
      invoking the helper command <code><b><a href=
      "tablelistBinding.html#convEventFields">tablelist::convEventFields</a></b></code>
      as follows:

      <blockquote>
	<pre>
foreach {tablelist::W tablelist::x tablelist::y} \
    [tablelist::convEventFields %W %x %y] {}
</pre>
      </blockquote>

      <p>This conversion of the event fields is necessary because the Tcl
      command associated with a tablelist expects any coordinates relative to
      the widget itself, not its body component.&nbsp; It makes use of help
      variables from the <code><b>tablelist</b></code> namespace in order to
      avoid any conflicts with global variables.</p>

      <p>Several of the events have no <code><b>%x</b></code> and
      <code><b>%y</b></code> fields; in this case another helper command
      <code><b><a href=
      "tablelistBinding.html#getTablelistPath">tablelist::getTablelistPath</a></b></code>
      is used to set the help variable <code><b>tablelist::W</b></code> to the
      path name of the tablelist widget:</p>

      <blockquote>
	<pre>
set tablelist::W [tablelist::getTablelistPath %W]
</pre>
      </blockquote>

      <p>The binding tag <code><b>TablelistBody</b></code> replaces the class
      name (<code><b>Frame</b></code> or <code><b>TSeparator</b></code>) of the
      separator widgets, too.&nbsp; It also replaces the binding tag
      <code><b>Message</b></code> of the message widgets used to display
      multi-line elements, as well as the binding tag <code><b>Label</b></code>
      of the label widgets used to display embedded images.&nbsp; This makes
      sure that the default handling of the mouse events on the column
      separators, multi-line cells, and embedded images is the same as in the
      rest of the tablelist's body.</p>

      <p>When defining individual bindings for tablelist widgets, the same
      conversion of the event fields is needed as for the default
      bindings.&nbsp; For example, the binding script below for the tablelist
      widget <code>.tbl</code> prints the index of the cell where mouse button
      1 was clicked:</p>

      <blockquote>
	<pre>
bind [.tbl bodytag] &lt;Button-1&gt; {
    foreach {tablelist::W tablelist::x tablelist::y} \
	[tablelist::convEventFields %W %x %y] {}
    puts "clicked on cell [.tbl containingcell $tablelist::x $tablelist::y]"
}
</pre>
      </blockquote>

      <p>By associating the script with the binding tag returned by the
      <code><b><a href="#bodytag">bodytag</a></b></code> subcommand instead of
      just with the path name of the tablelist's body we make sure to have the
      same event handling for the separators, multi-line cells, and embedded
      images as for the rest of the tablelist's body.</p>

      <p>The bindings associated with the binding tag
      <code><b>TablelistBody</b></code>, created automatically by the
      <code><b>tablelist::tablelist</b></code> command, ensure that the body
      component of a tablelist has the same default behavior as a listbox
      widget.&nbsp; If the selection type is <code><b>row</b></code> (which is
      the default) then everything described in the "DEFAULT BINDINGS" section
      of the <b>listbox</b> manual entry applies to the body component of a
      tablelist, too.&nbsp; The only difference is that the word "element" in
      that manual page has to be replaced with "item" when applying the
      description to the body of a tablelist widget.</p>

      <p>If the selection type is <code><b>cell</b></code> then everything
      described in the "DEFAULT BINDINGS" section of the <b>listbox</b> manual
      entry applies to the body component of a tablelist, too, with the
      following extensions and changes:</p>

      <ol>
	<li>If <code>Tab</code> or <code>Shift-Tab</code> is pressed, the
	location cursor (active element) moves to the next/previous
	element.&nbsp; If the selection mode is <code><b>browse</b></code> or
	<code><b>extended</b></code> then the new active element is also
	selected and all other elements are deselected.&nbsp; In
	<code><b>extended</b></code> mode the new active element becomes the
	selection anchor.&nbsp; Notice that these bindings replace the common
	inter-widget navigation via <code>Tab</code> and <code>Shift-Tab</code>
	with inter-cell navigation.&nbsp; Just like in the case of the text
	widget, <code>Control-Tab</code> and <code>Control-Shift-Tab</code> are
	intended to be used for widget-to-widget keyboard navigation.&nbsp;
	Unfortunately, this won't always work because some window managers
	intercept the latter key sequences and use them for their own purposes
	(like inter-workplace navigation).&nbsp; For this reason, Tablelist
	supports the additional key sequences <code>Meta-Tab</code> and
	<code>Meta-Shift-Tab</code> as replacements for
	<code>Control-Tab</code> and <code>Control-Shift-Tab</code>,
	respectively.<br>
	&nbsp;</li>

	<li>If the <code>Left</code> or <code>Right</code> key is pressed, the
	location cursor (active element) moves to the previous/next element of
	the active row.&nbsp; If the selection mode is
	<code><b>browse</b></code> or <code><b>extended</b></code> then the new
	active element is also selected and all other elements are
	deselected.&nbsp; In <code><b>extended</b></code> mode the new active
	element becomes the selection anchor.<br>
	&nbsp;</li>

	<li>In <code><b>extended</b></code> mode, <code>Shift-Left</code> and
	<code>Shift-Right</code> move the location cursor (active element) to
	the previous/next element of the active row and also extend the
	selection to that element in a fashion similar to dragging with mouse
	button 1.<br>
	&nbsp;</li>

	<li>If the <code>Home</code> or <code>End</code> key is pressed, the
	location cursor (active element) moves to the first/last element of the
	active row, the new active element is selected, and all other elements
	are deselected.<br>
	&nbsp;</li>

	<li>In <code><b>extended</b></code> mode, <code>Shift-Home</code> and
	<code>Shift-End</code> extend the selection to the first/last element
	of the active row.&nbsp; In <code><b>multiple</b></code> mode,
	<code>Shift-Home</code> and <code>Shift-End</code> move the location
	cursor to the first/last element of the active row.<br>
	&nbsp;</li>

	<li>If the location cursor is in an editable cell then
	<code>Return</code> and <code>KP_Enter</code> start the interactive
	editing of the active element.</li>
      </ol>

      <p>Just like in the case of the listbox widget, any changes to the
      selection will automatically generate the virtual event
      <code><b>&lt;&lt;ListboxSelect&gt;&gt;</b></code>.&nbsp; Instead of this
      event (which is supported for compatibility reasons), the virtual event
      <code><b>&lt;&lt;TablelistSelect&gt;&gt;</b></code> can be used to be
      made aware of any changes to tablelist selection.&nbsp; Both events will
      be generated independently of the selection type.</p>

      <p>The following binding associated with the binding tag
      <code><b>TablelistBody</b></code> is only valid if the selection mode is
      <code><b>single</b></code> or <code><b>multiple</b></code>:&nbsp; If
      mouse button 1 is clicked on an item and then dragged outside that item,
      and the value of the <code><b><a href=
      "#movablerows">-movablerows</a></b></code> configuration option is true,
      then the mouse cursor takes on the shape specified by the
      <code><b><a href="#movecursor">-movecursor</a></b></code> option,
      indicating that the item in question is being moved to another position,
      visualized with the aid of a gap placed before the target item.&nbsp;
      This operation ends when mouse button 1 is released, and can be canceled
      by pressing the <code>Escape</code> key.&nbsp; In both cases, the mouse
      cursor is reset to its original value, specified by the
      <code><b>-cursor</b></code> configuration option.&nbsp; After releasing
      mouse button 1, the source item is moved before the one indicated by the
      gap mentioned above and the virtual event
      <code><b>&lt;&lt;TablelistRowMoved&gt;&gt;</b></code> is generated.</p>
    </dd>

    <dt><a name="label_bindings"></a><b>DEFAULT BINDINGS FOR THE HEADER
    LABELS</b></dt>

    <dd>
      The <code><b>tablelist::tablelist</b></code> command automatically
      creates the following bindings for the header labels:<br>
      &nbsp;

      <ol>
	<li>If the mouse pointer is on the right edge of a header label or
	within a few pixels of its right edge, and both the value of the
	<code><b><a href="#resizablecolumns">-resizablecolumns</a></b></code>
	configuration option and that of the <code><b><a href=
	"#col_resizable">-resizable</a></b></code> option for the column
	corresponding to that label are true, then the mouse cursor takes on
	the shape specified by the <code><b><a href=
	"#resizecursor">-resizecursor</a></b></code> option.&nbsp; By clicking
	mouse button 1 in this area and moving the mouse while its button 1 is
	down, the column corresponding to that label will be resized by the
	amount of the cursor motion.&nbsp; The interactive column resizing ends
	when mouse button 1 is released, and can be canceled by pressing the
	<code>Escape</code> key.&nbsp; In both cases, the mouse cursor is reset
	to its original value, specified by the <code><b>-cursor</b></code>
	configuration option.&nbsp; When the column resize operation is
	finished, the virtual event
	<code><b>&lt;&lt;TablelistColumnResized&gt;&gt;</b></code> is
	generated.<br>
	&nbsp;</li>

	<li>If mouse button 1 is pressed over a header label but outside the
	resize area described above and then dragged outside the label, and the
	value of the <code><b><a href=
	"#movablecolumns">-movablecolumns</a></b></code> configuration option
	is true, then the mouse cursor takes on the shape specified by the
	<code><b><a href="#movecolumncursor">-movecolumncursor</a></b></code>
	option, indicating that the column in question is being moved to
	another position, visualized with the aid of a gap placed before the
	label of the target column.&nbsp; This operation ends when mouse button
	1 is released, and can be canceled by pressing the <code>Escape</code>
	key when the mouse pointer is outside the label.&nbsp; In both cases,
	the mouse cursor is reset to its original value, specified by the
	<code><b>-cursor</b></code> configuration option.&nbsp; After releasing
	mouse button 1, the source column is moved before the one indicated by
	the gap mentioned above and the virtual event
	<code><b>&lt;&lt;TablelistColumnMoved&gt;&gt;</b></code> is
	generated.<br>
	&nbsp;</li>

	<li>If mouse button 1 is pressed over a header label but outside the
	resize area described above and later released over the same label, and
	the command specified by the <code><b><a href=
	"#labelcommand">-labelcommand</a></b></code> option is a nonempty
	string, then this command is concatenated with the name of the
	tablelist widget and the column index of the respective label, and the
	resulting script is evaluated in the global scope.&nbsp; If another
	nonempty label command was specified at column level by using the
	<code><b><a href="#columnconfigure">columnconfigure</a></b></code>
	option of the Tcl command associated with the tablelist widget, then
	that column-specific command will be used instead of the global
	one.&nbsp; If mouse button 1 was pressed together with the
	<code>Shift</code> key then the widget- or column-specific command
	mentioned above will be replaced with the one specified by the
	<code><b><a href="#labelcommand2">-labelcommand2</a></b></code> option
	at widget or column level.<br>
	&nbsp;</li>

	<li><a name="button3"></a>The Tablelist package defines the virtual
	event <code><b>&lt;&lt;Button3&gt;&gt;</b></code> as
	<code><b>&lt;Button-3&gt;</b></code> for all windowing systems and
	additionally as <code><b>&lt;Control-Button-1&gt;</b></code> for Mac OS
	Classic and Mac OS X Aqua.&nbsp; If this event occurs over a header
	label and both the value of the <code><b><a href=
	"#resizablecolumns">-resizablecolumns</a></b></code> configuration
	option and that of the <code><b><a href=
	"#col_resizable">-resizable</a></b></code> option for the column
	corresponding to that label are true, then the width of that column is
	set to zero, i.e., it is made just large enough to hold all the
	elements in the column, including the header (but no larger than the
	maximum width indicated by the <code><b><a href=
	"#col_maxwidth">-maxwidth</a></b></code> column configuration option),
	and the virtual event
	<code><b>&lt;&lt;TablelistColumnResized&gt;&gt;</b></code> is
	generated.<br>
	&nbsp;</li>

	<li>The Tablelist package defines the virtual event
	<code><b>&lt;&lt;ShiftButton3&gt;&gt;</b></code> as
	<code><b>&lt;Shift-Button-3&gt;</b></code> for all windowing systems
	and additionally as <code><b>&lt;Shift-Control-Button-1&gt;</b></code>
	for Mac OS Classic and Mac OS X Aqua.&nbsp; If this event occurs over a
	header label and both the value of the <code><b><a href=
	"#resizablecolumns">-resizablecolumns</a></b></code> configuration
	option and that of the <code><b><a href=
	"#col_resizable">-resizable</a></b></code> option for the column
	corresponding to that label are true, then the width of that column is
	set to its last static width (if any) and the virtual event
	<code><b>&lt;&lt;TablelistColumnResized&gt;&gt;</b></code> is
	generated.</li>
      </ol>

      <p>If the tablelist's <code><b><a href="#state">state</a></b></code> is
      <code><b>disabled</b></code> then none of the above actions occur: the
      labels are completely insensitive.</p>
    </dd>

    <dt><a name="edit_bindings"></a><b>DEFAULT BINDINGS FOR INTERACTIVE CELL
    EDITING</b></dt>

    <dd>
      The <code><b>tablelist::tablelist</b></code> command extends and
      partially redefines the bindings of some of the components of the
      temporary embedded widget used for interactive cell editing, which is
      started by clicking mouse button 1 in an editable cell or using keyboard
      navigation to move from one editable cell into another.&nbsp; If the
      selection type is <code><b>cell</b></code> and the location cursor is in
      an editable cell, then the interactive editing of the active element can
      also be started by pressing <code>Return</code> or
      <code>KP_Enter</code>.&nbsp; The affected components of the temporary
      embedded widget depend on the edit window: the widget itself in case of a
      Tk or tile checkbutton; the edit window's entry children in case of a
      mentry widget; the only entry or entry-like component of the edit window
      in all other cases (see also the <code><b><a href=
      "#entrypath">entrypath</a></b></code> subcommand).<br>
      &nbsp;

      <ol>
	<li><code>Control-i</code> inserts a tabulator character into the edit
	window's entry or entry-like components (if any), at the point of the
	insertion cursor.<br>
	&nbsp;</li>

	<li><code>Control-j</code> inserts a newline character into the edit
	window's entry or entry-like components (if any), at the point of the
	insertion cursor.<br>
	&nbsp;</li>

	<li>If the edit window is a text widget then <code>Return</code> and
	<code>KP_Enter</code> insert a newline character at the point of the
	insertion cursor.&nbsp; Otherwise they terminate the editing and
	destroy the edit window.<br>
	&nbsp;</li>

	<li><code>Control-Return</code> and <code>Control-KP_Enter</code>
	terminate the editing and destroy the edit window.<br>
	&nbsp;</li>

	<li><code>Escape</code> aborts the editing and destroys the edit
	window.<br>
	&nbsp;</li>

	<li>A click with the left mouse button anywhere in the tablelist's
	body, outside the cell just being edited, terminates the editing in the
	current cell and destroys the edit window or moves it into the cell
	that was just clicked into if the latter is editable.<br>
	&nbsp;</li>

	<li>When editing a cell that is not the only editable cell of the
	tablelist widget, <code>Tab</code> and <code>Shift-Tab</code> terminate
	the editing in the current cell, move the edit window into the
	next/previous editable cell of the tablelist, select the contents of
	the edit window's first entry or entry-like component (if any), and set
	the insertion cursor to its end.&nbsp; If the new edit window is a text
	widget then its contents are left unselected.&nbsp; Notice that these
	bindings replace the common inter-widget navigation via
	<code>Tab</code> and <code>Shift-Tab</code> with inter-cell
	navigation.&nbsp; Just like in the case of the text widget,
	<code>Control-Tab</code> and <code>Control-Shift-Tab</code> are
	intended to be used for widget-to-widget keyboard navigation during
	interactive cell editing.&nbsp; Unfortunately, this won't always work
	because some window managers intercept the latter key sequences and use
	them for their own purposes (like inter-workplace navigation).&nbsp;
	For this reason, Tablelist supports the additional key sequences
	<code>Meta-Tab</code> and <code>Meta-Shift-Tab</code> as replacements
	for <code>Control-Tab</code> and <code>Control-Shift-Tab</code>,
	respectively.<br>
	&nbsp;</li>

	<li>When editing a cell that is not the first/last editable cell within
	its row, <code>Alt-Left</code>/<code>Alt-Right</code>
	(<code>Command-Left</code>/<code>Command-Right</code> on Mac OS Classic
	and Mac OS X Aqua) terminates the editing in the current cell, moves
	the edit window into the previous/next editable cell of the row,
	selects the contents of the edit window's first entry or entry-like
	component (if any), and sets the insertion cursor to its end.&nbsp; If
	the new edit window is a text widget then its contents are left
	unselected.&nbsp; The key sequence
	<code>Meta-Left</code>/<code>Meta-Right</code> has the same effect as
	<code>Alt-Left</code>/<code>Alt-Right</code>.&nbsp; If
	<code><b>tk_strictMotif</b></code> is false and the edit window is not
	a text widget then <code>Meta-b</code> and <code>Meta-f</code> behave
	the same as <code>Alt-Left</code> and <code>Alt-Right</code>,
	respectively.&nbsp; If the edit window is a Tk or tile checkbutton
	widget then <code>Left</code>/<code>Right</code> has the same effect as
	<code>Alt-Left</code>/<code>Alt-Right</code>.<br>
	&nbsp;</li>

	<li>When editing a cell that is not the first/last editable cell within
	its column, <code>Alt-Up</code>/<code>Alt-Down</code>
	(<code>Command-Up</code>/<code>Command-Down</code> on Mac OS Classic
	and Mac OS X Aqua) terminates the editing in the current cell, moves
	the edit window one line up/down within the column, selects the
	contents of the edit window's first entry or entry-like component (if
	any), and sets the insertion cursor to its end.&nbsp; If the new edit
	window is a text widget then its contents are left unselected.&nbsp;
	The key sequence <code>Meta-Up</code>/<code>Meta-Down</code> has the
	same effect as <code>Alt-Up</code>/<code>Alt-Down</code>.&nbsp; If
	<code><b>tk_strictMotif</b></code> is false and the edit window is not
	a text widget or an Iwidgets combobox, then <code>Control-p</code> and
	<code>Control-n</code> behave the same as <code>Alt-Up</code> and
	<code>Alt-Down</code>, respectively.&nbsp; If the edit window is a Tk
	or tile entry, Tk or tile checkbutton, BWidget Entry, Iwidgets
	entryfield/spinner/spinint, or a mentry widget of type
	<code>"FixedPoint"</code>, then <code>Up</code>/<code>Down</code> has
	the same effect as <code>Alt-Up</code>/<code>Alt-Down</code>.<br>
	&nbsp;</li>

	<li>When editing a cell that is not the first/last editable cell within
	its column, <code>Alt-Prior</code>/<code>Alt-Next</code>
	(<code>Command-Prior</code>/<code>Command-Next</code> on Mac OS Classic
	and Mac OS X Aqua) terminates the editing in the current cell, moves
	the edit window up/down by one page within the column, selects the
	contents of the edit window's first entry or entry-like component (if
	any), and sets the insertion cursor to its end.&nbsp; If the new edit
	window is a text widget then its contents are left unselected.&nbsp;
	The key sequence <code>Meta-Prior</code>/<code>Meta-Next</code> has the
	same effect as <code>Alt-Prior</code>/<code>Alt-Next</code>.&nbsp; If
	the edit window is not a text widget, BWidget SpinBox, Oakley combobox,
	or a mentry widget of type <code>"Date"</code>, <code>"Time"</code>, or
	<code>"IPAddr"</code>, then <code>Prior</code>/<code>Next</code> has
	the same effect as <code>Alt-Prior</code>/<code>Alt-Next</code>.<br>
	&nbsp;</li>

	<li>When editing a cell that is not the only editable cell of the
	tablelist widget, <code>Alt-Home</code>/<code>Alt-End</code>
	(<code>Command-Home</code>/<code>Command-End</code> on Mac OS Classic
	and Mac OS X Aqua) terminates the editing in the current cell, moves
	the edit window into the first/last editable cell of the tablelist,
	selects the contents of the edit window's first entry or entry-like
	component (if any), and sets the insertion cursor to its end.&nbsp; If
	the new edit window is a text widget then its contents are left
	unselected.&nbsp; The key sequence
	<code>Meta-Home</code>/<code>Meta-End</code> has the same effect as
	<code>Alt-Home</code>/<code>Alt-End</code>.&nbsp; If
	<code><b>tk_strictMotif</b></code> is false and the edit window is not
	a text widget then <code>Meta-&lt;</code> and <code>Meta-&gt;</code>
	behave the same as <code>Alt-Home</code> and <code>Alt-End</code>,
	respectively.&nbsp; If the edit window is not a text widget then
	<code>Control-Home</code>/<code>Control-End</code> has the same effect
	as <code>Alt-Home</code>/<code>Alt-End</code>.</li>
      </ol>

      <p>Before moving the edit window, the key sequences mentioned under 7 -
      11 move the active item or element and change the (cell)selection and the
      (cell)selection anchor in the body of the tablelist widget.&nbsp; For
      example, if <code>Alt-Up</code>/<code>Alt-Down</code> or
      <code>Meta-Up</code>/<code>Meta-Down</code>
      (<code>Command-Up</code>/<code>Command-Down</code> on Mac OS Classic and
      Mac OS X Aqua) is pressed when editing a cell that is not the first/last
      editable cell within its column, then the active item or element
      (depending on the selection type) moves one line up/down.&nbsp; If the
      selection mode is <code><b>browse</b></code> or
      <code><b>extended</b></code> then the new active item or element is also
      selected and all other items or elements are deselected.&nbsp; In
      <code><b>extended</b></code> mode the new active item or element becomes
      the (cell)selection anchor.&nbsp; This is exactly the same behavior as
      the one exhibited by the <code>Up</code> and <code>Down</code> keys in
      the tablelist's body.</p>

      <p>If the tablelist's <code><b><a href="#state">state</a></b></code> is
      <code><b>disabled</b></code> then none of the above actions occur.</p>
    </dd>

    <dt><a name="keywords"></a><b>KEYWORDS</b></dt>

    <dd>tablelist, multi-column, listbox, widget</dd>
  </dl>

  <div align="center">
    <p><a href="#contents">Contents</a>&nbsp;&nbsp;&nbsp;&nbsp; <a href=
    "index.html">Start page</a></p>
  </div>
</body>
</html>
